1

リソースをロードする .jar の作成に頭を悩ませています。ここでたくさんの投稿を読みましたが、どのように使用すればよいかわかりません

this.getClass().getResourceAsStream("..");

データベースをメモリにロードする必要があります。

File file = new File(Thread.currentThread().
getContextClassLoader().getResource("phonebook").getFile());                          
String attachStmt = "ATTACH '" + file + "' AS tempInMemoryDb";
stmt.execute(attachStmt);

そのため、NetBeans からプロジェクトを実行すると、データベースは問題なくロードされますが、クリーンアップしてビルドし、dis フォルダから jar ファイルを実行すると、コマンド ラインで電話帳ファイル (データベース ファイル) がロードされていないことがわかります。だから、私の質問は次のとおりです。DBをロードできるようにthis.getClass().getResourceAsStream("..")、ファイルを作成して渡すにはどうすればよいですか?"String attachStmt = "ATTACH '" + file + "' AS tempInMemoryDb";

4

1 に答える 1

3

ATTACH入力としてファイルが必要ですが、アプリケーションの JAR をビルドすると、参照しているファイルはこの JAR 内にあり、抽出されません! この場合、最初にデータをファイルに書き込む必要があります。

を呼び出して、空の一時ファイルを作成しますFile.createTemporaryFileこの質問への回答で説明されている方法のいずれかを使用して、返されたストリームのコンテンツをgetResourceAsStream一時ファイルにコピーします。

プログラムを終了するときは、一時ファイルを削除することを忘れないでください。これを確実にする 1 つの方法deleteOnExitは、最初のステップで返された一時ファイル オブジェクトを呼び出すことです。

于 2012-11-05T12:02:16.810 に答える