java - 与 sqlite4java 的 UnsatisfiedLinkError,没有 sqlite4java-osx-amd64

标签 java sqlite

我遇到了与此问题类似的问题:

UnsatisfiedLinkError with sqlite4java Jar on Mac OS X NetBeans

我正在运行一个使用 sqlite 的脚本,虽然我能够通过命令行成功运行 sqlite3,但当我尝试运行该脚本时,我总是会遇到此错误:

SEVERE: [sqlite] SQLiteQueue[master.catalog]: error running job queue
com.almworks.sqlite4java.SQLiteException: [-91] cannot load library: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path

当我在我的 lib 文件夹中运行“java -jar sqlite4java.jar -d”时,我看到了这个:

140428:170139.831 FINE [sqlite] Internal: loading library
140428:170139.853 FINE [sqlite] Internal: java.library.path=/Users/lee33/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java
140428:170139.853 FINE [sqlite] Internal: sqlite4java.library.path=null
140428:170139.853 FINE [sqlite] Internal: cwd=/Users/lee33/Desktop/myria_workspace/myria/lib/sqlite4java-282/.
140428:170139.853 FINE [sqlite] Internal: default path=null 
140428:170139.853 FINE [sqlite] Internal: forced path=null 
140428:170139.854 FINE [sqlite] Internal: os.name=mac os x; os=osx
140428:170139.854 FINE [sqlite] Internal: os.arch=amd64
140428:170139.854 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64
140428:170139.855 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
140428:170139.855 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4
140428:170139.856 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4 in java.library.path
140428:170139.856 FINE [sqlite] Internal: trying to load sqlite4java-osx
140428:170139.857 FINE [sqlite] Internal: cannot load sqlite4java-osx: java.lang.UnsatisfiedLinkError: no sqlite4java-osx in java.library.path
140428:170139.857 FINE [sqlite] Internal: trying to load sqlite4java
140428:170139.858 FINE [sqlite] Internal: cannot load sqlite4java: java.lang.UnsatisfiedLinkError: no sqlite4java in java.library.path
140428:170139.858 FINE [sqlite] Internal: trying to load sqlite4java-osx-amd64-d
140428:170139.859 FINE [sqlite] Internal: cannot load sqlite4java-osx-amd64-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64-d in java.library.path
140428:170139.859 FINE [sqlite] Internal: trying to load sqlite4java-osx-10.4-d
140428:170139.859 FINE [sqlite] Internal: cannot load sqlite4java-osx-10.4-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-10.4-d in java.library.path
140428:170139.860 FINE [sqlite] Internal: trying to load sqlite4java-osx-d
140428:170139.860 FINE [sqlite] Internal: cannot load sqlite4java-osx-d: java.lang.UnsatisfiedLinkError: no sqlite4java-osx-d in java.library.path
140428:170139.860 FINE [sqlite] Internal: trying to load sqlite4java-d
140428:170139.861 FINE [sqlite] Internal: cannot load sqlite4java-d: java.lang.UnsatisfiedLinkError: no sqlite4java-d in java.library.path
Error: cannot load SQLite
java.lang.UnsatisfiedLinkError: no sqlite4java-osx-amd64 in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at com.almworks.sqlite4java.Internal.tryLoadFromSystemPath(Internal.java:349)
    at com.almworks.sqlite4java.Internal.loadLibraryX(Internal.java:124)
    at com.almworks.sqlite4java.SQLite.main(SQLite.java:368)

有人知道我缺少什么吗?

最佳答案

您的 java.library.path 不包括当前目录。

我的 OSX 机器上的默认设置是:

/Users/MY_USERNAME/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.

但是你的阅读

/Users/MY_USERNAME/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java

注意第一行末尾的 :.

你应该能够通过运行来让它工作

java -Djava.library.path=. -jar sqlite4java.jar

或者将 *.jnilib 文件从 sqlite4java-282.zip 复制到 java.library.path 中的任何目录(例如 /Users/lee33/Library/Java/Extensions)

或者通过在您选择的 IDE 中调整项目的路径:

另见:

关于java - 与 sqlite4java 的 UnsatisfiedLinkError,没有 sqlite4java-osx-amd64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353291/

相关文章:

iphone - iphone上tableview上的sqlite db上的文本搜索太慢了

java - 使用超过 120GB RAM 的 Concurrent Mark Sweep 垃圾收集器

java - LLMNR (Link-Local Multicast Name Resolution) Java响应器

java - 在不同的类中访问随机数字符串

Android 变量 SQLite 选择查询性能 - 任何解释?

Java SQLite : exploiting a ResultSet for a COUNT query

java - 如何使用java检查子域是否也来自同一域

java - Vaadin 在新标签页中打开链接

shell - 推断 SQLite3 shell 工具返回的值的类型

python - 如何将 "inject"内存中的 SQLAlchemy sqlite3 数据库放入 Flask test_client?