javax.microedition.rms.rms.recordstore 6.0을 생성합니다
-
18-09-2019 - |
문제
나는 사용하는 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
그리고 chmod
0777로 Ding은 문제를 해결했습니다.
제휴하지 않습니다 StackOverflow