문제

나는 사용하는 J2ME와 함께 응용 프로그램을 작성하려고합니다. javax.microedition.rms.RecordStore 영구 데이터를 저장합니다. NetBeans 6.0 및 J2ME 2.2에서 Gentoo 에서이 프로젝트를 개발하고 있습니다. 프로젝트를 실행하려고 할 때 레코드 스토어를 만들 수 없기 때문에 오류가 발생합니다. 스택 추적을 포함한 출력 샘플은 다음과 같습니다.

jar:
pre-run:
cldc-run:
Copying 1 file to /home/dzaslavs/ellipsix/programming/cataschedule/dist/nbrun1623864904410254936
Copying 1 file to /home/dzaslavs/ellipsix/programming/cataschedule/dist/nbrun1623864904410254936
Jad URL for OTA execution: http://localhost:8082/servlet/org.netbeans.modules.mobility.project.jam.JAMServlet/home/dzaslavs/ellipsix/programming/cataschedule/dist//CATASchedule.jad
Starting emulator in execution mode
Running with storage root rms
javax.microedition.rms.RecordStoreException: error opening record store file
        at javax.microedition.rms.RecordStore.(RecordStore.java:2150)
        at javax.microedition.rms.RecordStore.openRecordStore(RecordStore.java:208)
        at net.ellipsix.cata.StopRecordStore.(StopRecordStore.java:48)
        at net.ellipsix.cata.CATAMIDlet.getStopList(CATAMIDlet.java:169)
        at net.ellipsix.cata.CATAMIDlet.startMIDlet(CATAMIDlet.java:64)
        at net.ellipsix.cata.CATAMIDlet.startApp(CATAMIDlet.java:449)
        at javax.microedition.midlet.MIDletProxy.startApp(MIDletProxy.java:44)
        at com.sun.midp.midlet.Scheduler.schedule(Scheduler.java:372)
        at com.sun.midp.main.Main.runLocalClass(Main.java:461)
        at 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 시간 후에 답이 없습니까? 진짜?

도움이 되었습니까?

해결책

나는 달렸다

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 (No such file or directory)
[pid 10593] open("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = -1 ENOENT (No such file or directory)
[pid 10593] stat64("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", 0xbfa475d0) = -1 ENOENT (No such file or directory)
[pid 10593] mkdir("/opt/sun-j2me-bin-2.2/bin/./../appdb/rms", 0777) = -1 EACCES (Permission denied)

디렉토리를 수동으로 만듭니다 /opt/sun-j2me-bin-2.2/appdb/rms 그리고 chmod0777로 Ding은 문제를 해결했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top