在Mac OS X上使用sqlite4java Jar的UnsatisfiedLinkError

时间:2013-01-13 07:35:23

标签: java macos unsatisfiedlinkerror

我在我的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中”,也会发生这种情况,这应该会复制我需要的所有文件。为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

与许多其他依赖项不同,sqlite4java使用基于主机平台的其他文件与SQLite数据库进行交互。当Eclipse打包所需的库时,它只复制sqlite4java.jar文件,而不复制其他所需的文件。

您可能认为解决方案是使用“将所需的库复制到生成的JAR旁边的子文件夹”选项导出可运行的JAR文件,并手动添加丢失的文件,但是,似乎不是工作要么。

我发现的最佳解决方案实际上是最适合Mac的解决方案。您可以导出为Mac OS X应用程序包,而不是导出为可运行的JAR文件!要在Eclipse中执行此操作:

  1. 转到“文件” - > “导出...”
  2. 在“其他”文件夹下,选择“Mac OS X应用程序包”
  3. 填写第一个屏幕,然后点击“下一步”
  4. 在“添加到捆绑包”部分下,在“添加到类路径”部分的SQLite下载中添加“libsqlite4java-osx.jnilib”文件(还可以添加libsqlite4java-osx-10.4.jnilib和libsqlite4java-osx -ppc.jnilib,如果你支持传统硬件)
  5. 点击“完成”
  6. 您现在可以使用适当加载sqlite4java的Mac OS X应用程序。