3

Java アプリケーションで sqlite4java ライブラリを使用していますが、Eclipse で実行すると問題なく動作します。しかし、実行可能な JAR をビルドして Mac OS X で実行しようとすると、次のエラーが発生します。

Error: Could not load database file. 
Error: com.almworks.sqlite4java.SQLiteException: [-91] cannot load library:
java.lang.UnsatisfiedLinkError: no sqlite4java-osx-x86_64 in java.library.path

これは、必要なすべてのファイルをコピーすると思われる「必要なライブラリを生成された JAR にパッケージ化する」を選択した場合でも発生します。なぜこれが機能しないのですか?

4

1 に答える 1

0

他の多くの依存関係とは異なり、sqlite4java は、ホスト プラットフォームに基づく追加のファイルを使用して、SQLite データベースとやり取りします。Eclipse が必要なライブラリをパッケージ化すると、sqlite4java.jar ファイルのみがコピーされ、その他の必要なファイルはコピーされません。

解決策は、「必要なライブラリを生成された JAR の隣のサブフォルダーにコピーする」オプションを使用して実行可能な JAR ファイルをエクスポートし、不足しているファイルを手動で追加することだと思うかもしれませんが、残念ながら、それもうまくいかないようです。 .

私が見つけた最良の解決策は、実際には最も Mac に適したものです。実行可能な JAR ファイルとしてエクスポートする代わりに、Mac OS X アプリケーション バンドルとしてエクスポートします。Eclipse でこれを行うには:

  1. 「ファイル」->「エクスポート…」に移動します
  2. 「その他」フォルダの下で、「Mac OS X アプリケーション バンドル」を選択します。
  3. 最初の画面に入力し、「次へ」をクリックします
  4. 「バンドルに追加」セクションで、SQLite ダウンロードから「libsqlite4java-osx.jnilib」ファイルを「クラスパスに追加」セクションに追加します (libsqlite4java-osx-10.4.jnilib と libsqlite4java-osx-ppc を追加することもできます)。レガシーハードウェアをサポートしている場合は jnilib)
  5. 「完了」をクリック

これで、sqlite4java を適切にロードする Mac OS X アプリケーションが完成しました。

于 2013-01-13T07:35:23.243 に答える