Ошибка создания javax.microedition.rms.RecordStore в NetBeans 6.0

Я пытаюсь написать приложение с J2ME, которое использует javax.microedition.rms.RecordStore хранить постоянные данные. Я занимаюсь разработкой этого проекта в NetBeans 6.0 и J2ME 2.2 в Gentoo. Когда я пытаюсь запустить проект, я получаю сообщение об ошибке, поскольку очевидно, что хранилище записей не может быть создано. Вот пример вывода, включая трассировку стека:

баночка:
до запуска:
CLDC-запуска:
Копирование 1 файла в /home/dzaslavs/ellipsix/ для программирования /cataschedule/dist/nbrun1623864904410254936
Копирование 1 файла в /home/dzaslavs/ellipsix/ для программирования /cataschedule/dist/nbrun1623864904410254936
Jad URL для выполнения OTA: http://localhost:8082/servlet/org.netbeans.modules.mobility.project.jam.JAMServlet/home/dzaslavs/ellipsix/ software /cataschedule/dist//CATASchedule.jad
Запуск эмулятора в режиме исполнения
Запуск с хранилищем root rms
javax.microedition.rms.RecordStoreException: ошибка при открытии файла хранилища записей
        в javax.microedition.rms.RecordStore.(RecordStore.java:2150)
        в javax.microedition.rms.RecordStore.openRecordStore(RecordStore.java:208)
        в net.ellipsix.cata.StopRecordStore.(StopRecordStore.java:48)
        в net.ellipsix.cata.CATAMIDlet.getStopList(CATAMIDlet.java:169)
        в net.ellipsix.cata.CATAMIDlet.startMIDlet(CATAMIDlet.java:64)
        в net.ellipsix.cata.CATAMIDlet.startApp(CATAMIDlet.java:449)
        в javax.microedition.midlet.MIDletProxy.startApp(MIDletProxy.java:44)
        на com.sun.midp.midlet.Scheduler.schedule(Scheduler.java:372)
        на com.sun.midp.main.Main.runLocalClass(Main.java:461)
        на com.sun.midp.main.Main.main(Main.java:126)

Я нашел ссылку на то, что я думаю, является источником RecordStoreгде генерируется исключение: http://jcs.mobile-utopia.com/jcs/78052_RecordStore.java. Соответствующая строка внизу внизу, в основном так:

try {
    ...
}
catch (java.io.IOException ioe) {
    ...
    throw new RecordStoreException("error opening record store " + 
                                       "file");
}

это говорит о том, что при попытке NetBeans создать файл хранилища записей возникает исключение IOException. Но почему это случилось? К сожалению, в выводе ничего не говорится о том, почему не удается создать хранилище записей. Кто-нибудь знает, что может пойти не так, или что-нибудь о том, как обрабатывает NetBeans RecordStoreвнутренне?

Вот конструктор из моего кода, в котором выдается ошибка, если она уместна:

public StopRecordStore() throws RecordStoreException {
    this.store = RecordStore.openRecordStore("freqstops", true);
    if (store.getNumRecords() == 0) {
        try {
            byte[] collegeAllen = new StopRecord((short)1, "College & Allen").toBytes();
            store.addRecord(collegeAllen, 0, collegeAllen.length);
        }
        catch(IOException ioe) {
            ioe.printStackTrace();
        } // do nothing
    }
}

РЕДАКТИРОВАТЬ:... нет ответов через 10 часов? В самом деле?

1 ответ

Решение

Я побежал

 strace netbeans-6.0 
и следил за именами файлов, появляющимися в выходных данных в то время, когда приложение выдало ошибку.

 [pid 10593] stat64 ("/ opt / sun-j2me-bin-2.2 / bin /./../ appdb / rms / run_by_class_storage_freqstops.db", 0xbfa475c0) = -1 ENOENT (такого файла или каталога нет)
[pid 10593] open("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = -1 ENOENT (нет такого файла или каталога)
[pid 10593] stat64("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", 0xbfa475d0) = -1 ENOENT (такого файла или каталога нет)
[pid 10593] mkdir("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", 0777) = -1 EACCES (в доступе отказано) 

Создание каталога вручную /opt/sun-j2me-bin-2.2/appdb/rms а также chmod Динг до 0777 решил проблему.

Другие вопросы по тегам