2009-08-19 7 views
2

永続データを格納するためにjavax.microedition.rms.RecordStoreを使用するJ2MEアプリケーションを作成しようとしています。私はGentooのNetBeans 6.0とJ2ME 2.2でこのプロジェクトを開発しています。プロジェクトを実行しようとすると、明らかにレコードストアを作成できないため、エラーが発生します。 http://jcs.mobile-utopia.com/jcs/78052_RecordStore.javaNetBeans 6.0でjavax.microedition.rms.RecordStoreを作成する際のエラー

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の源だと思う何へのリンクを見つけた:ここではスタックトレースを含む出力のサンプルです。該当する行は、基本的にはこのように、ダウン底部付近にある:

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

ようににIOExceptionがNetBeansは、レコード・ストア・ファイルを作成しようとしたときにトリガがあることを示唆しています。しかし、なぜそれが起こるだろうか?残念ながら、レコードストアの作成に失敗した理由は、残念ながら黙っています。誰かが何がうまくいかないか、または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 
    } 
} 

EDIT:...いいえ答え10時間後に?本当に?

答えて

3

私は

strace netbeans-6.0
を実行し、アプリケーションがエラーを起こした頃に出現するファイル名を監視しました。手動でそれが0777にディレクトリに /opt/sun-j2me-bin-2.2/appdb/rmschmod鼎を作成

[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)

は、問題を解決しました。

関連する問題