Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Threads, Source not found 
V
    Опции темы
ts_
  Дата 3.11.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



    Всем доброго времени суток, в програме есть два потоки, один читает, с одного файла, второй записывает транслитный текс во второй,  выкидает ошибку source not found, вот исходные класы, почему она появляется? вот исходный код класов:
Главный:
Код

package mypackage;

import java.io.IOException;

public class MainClass {
    public static void main(final String...args) throws IOException {
        new CreateFiles();
        final ThreadBuffer tb = new ThreadBuffer();
        new Thread() {
            public void run() {
                if(!tb.isInterrupt()){
                    try {
                        tb.readString();
                    } catch (InterruptedException ie) {                   
                    } catch (IOException ioe) {} 
                } else {
                    this.interrupt();
                    try {
                        tb.closeFiles();
                    } catch (IOException ioe) {}
                }
            }
        }.start();
        
        new Thread() {
            public void run() {
                if(!tb.isInterrupt()){
                    try {
                        tb.putString();
                    } catch (InterruptedException ie) {
                        
                    } catch (IOException e) {
                    }
                } else { 
                    this.interrupt();
                }
            }
        }.start();
    }
}


Промежуточный клас-буфер:
Код

package mypackage;

import java.io.IOException;
import java.io.RandomAccessFile;

public class ThreadBuffer {
    private final TranslitDictionary td;
    
    private long fLength;
    private boolean interruptFlag = false;
    private boolean valueSet = false;
    private String tString = "";
    private RandomAccessFile rafToRead;
    private RandomAccessFile rafToWrite;

    ThreadBuffer() {
        this.td = new TranslitDictionary();
    }

    public boolean isInterrupt() {
        return interruptFlag;
    }

    public long getFLength() {
        return fLength;
    }

    public void setFLength() throws IOException {
        fLength = rafToRead.length();
    }

    public void setRafToRead() throws IOException {
        this.rafToRead = new RandomAccessFile("C:\\testfile.txt", "rw");
    }

    public void setRafToWrite() throws IOException {
        this.rafToWrite = new RandomAccessFile("C:\\testfile.txt", "rw");
    }

    public void closeFiles() throws IOException {
        rafToRead.close();
        rafToWrite.close();
    }

      
    synchronized public void putString() throws InterruptedException, IOException {
        while (this.valueSet) {
            try {
                wait();
            }  catch (InterruptedException ie) {}
        }
        rafToWrite.writeUTF(tString);
        this.valueSet = false;
        notify();
    }
    

    synchronized public void readString() throws InterruptedException, IOException {
        if (rafToRead.getFilePointer() <= fLength) {           
            while (!this.valueSet) {
                try {
                    wait();
                } catch (InterruptedException ie) {}
            }
            String tempCh = tString;
            System.out.println(tempCh);
            tempCh = rafToRead.readUTF();
            tempCh = tempCh.toUpperCase();
            char[] chArr = tempCh.toCharArray();
            for (int count = 0; count < chArr.length; count++) {
                if (td.isTransChar(chArr[count])) {
                    chArr[count] = td.getTransChar(chArr[count]);
                }
            }
            tempCh = "";
            for (char ch : chArr) {
                tempCh += ch;
            }
            tString = tempCh;
            System.out.println(tString);
            this.valueSet = true;
            notify();
        } 
            else {
            interruptFlag = true;
        }            
    }

}



Хеш таблица для транслита:
Код

package mypackage;
import java.util.Hashtable;

public class TranslitDictionary {
    private Hashtable<Character, Character> translitHt;
    public Character getTransChar(Character ch) {
        return translitHt.get(ch);
    }
    public boolean isTransChar(Character ch) {
        return translitHt.containsKey(ch);
    }
    public TranslitDictionary() {
        // TODO Auto-generated constructor stub
        translitHt = new Hashtable<Character, Character>();
        translitHt.put('А', 'A');
        translitHt.put('Б', 'B');
        translitHt.put('В', 'V');
        translitHt.put('Г', 'G');
        translitHt.put('Д', 'D');
        translitHt.put('Ж', 'G');
        translitHt.put('З', 'Z');
        translitHt.put('И', 'I');
        translitHt.put('Й', 'J');
        translitHt.put('К', 'K');
        translitHt.put('Л', 'L');
        translitHt.put('М', 'M');
        translitHt.put('Н', 'N');
        translitHt.put('О', 'O');
        translitHt.put('П', 'P');
        translitHt.put('Р', 'R');
        translitHt.put('С', 'S');
        translitHt.put('У', 'U');
        translitHt.put('Ф', 'F');
        translitHt.put('Х', 'H');
        translitHt.put('Ц', 'C');
        translitHt.put('Ч', '4');
        translitHt.put('Ш', '4');
        translitHt.put('Щ', '4');
        translitHt.put('Є', 'E');
        translitHt.put('Ю', 'U');
        translitHt.put('Я', 'J');
    }
}

и создание файлов:
Код

package mypackage;

import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;

public class CreateFiles {
    CreateFiles() throws IOException {
        File f1 = new File("C:\\testfile.txt");
        if (!f1.exists()) {
            f1.createNewFile();
        } else {
            f1.delete();
            f1.createNewFile();
        }
        File fT = new File("C:\\translitedFile.txt");
        if (!fT.exists()) {
            fT.createNewFile();
        } else {
            fT.delete();
            fT.createNewFile();
        }
        RandomAccessFile raf = new RandomAccessFile(f1, "rw");
        raf.writeUTF("Здание аеропорта");
        raf.close();
    }
}

PM MAIL ICQ   Вверх
Kangaroo
Дата 3.11.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата

source not found

Это что за ошибка такая? У меня выдает НПЕ, потому что ты забыл вызвать методы setRafToRead и setRafToWrite, чтобы проинициализировать файлы.
Плюс, в методе setRafToWrite поменяй название файла, а то сейчас они одинаковы.



--------------------
Lost....
PM MAIL MSN   Вверх
LSD
Дата 3.11.2007, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Полный стек ошибки выложи.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ts_
Дата 3.11.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



 С названиями ошибся, поменял, выдает:
"
Exception in thread "Thread-0" java.lang.NullPointerException
    at mgub.softservecom.training.ThreadBuffer.readString(ThreadBuffer.java:59)
    at mgub.softservecom.training.MainClass$1.run(MainClass.java:13)
Exception in thread "Thread-1" java.lang.NullPointerException
    at mgub.softservecom.training.ThreadBuffer.putString(ThreadBuffer.java:52)
    at mgub.softservecom.training.MainClass$2.run(MainClass.java:29)
"
А если ставить брейкпоинт в дебагере, то выскакивает "Source not found"
 smile 
PM MAIL ICQ   Вверх
Kangaroo
Дата 3.11.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Я же написал ошибку:
Цитата

У меня выдает НПЕ, потому что ты забыл вызвать методы setRafToRead и setRafToWrite, чтобы проинициализировать файлы.

Вот в этом месте:
Код

 if (rafToRead.getFilePointer() <= fLength) {

у тебя rafToRead == null

Напиши:
Код

ThreadBuffer() {
        this.td = new TranslitDictionary();
setRafToRead();
setRafToWrite();
    }



--------------------
Lost....
PM MAIL MSN   Вверх
ts_
Дата 3.11.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



    Исправил, еще я забыл setFLength(); дописать, но и с этим не ошибка

Это сообщение отредактировал(а) ts_ - 3.11.2007, 21:30
PM MAIL ICQ   Вверх
ts_
Дата 3.11.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 6.10.2006

Репутация: нет
Всего: нет



Всем спасибо за помощь, все работает, нашел еще один баг! 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0799 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.