我正在处理的项目是一个服务器端 Clojure 项目,其中Leiningen作为我的构建工具。
当我尝试运行使用Leiningen的 uberjar 创建的 JAR 时,就会出现问题。JAR 依赖于我放置在以下位置的一些本机库:/usr/lib/nativedeps/so。
在运行 JAR 之前,我将环境变量LD_LIBRARY_PATH与本机库路径一起导出,以便链接器知道在哪里查找本机库:
export LD_LIBRARY_PATH=/usr/lib/ctch/so
然后我运行它的 JAR:
java -jar externalapibe-0.1.0-standalone.jar 3001
抛出异常:
java.lang.UnsatisfiedLinkError:java.library.path 中没有 JavaASAPSDK
这意味着链接器无法找到JavaASAPSDK(它是/usr/lib/nativedeps/so中的本机库之一),我需要在java.library.path中指定库路径。所以我跑:
java -Djava.library.path=/usr/lib/nativedeps/so -jar externalapibe-0.1.0-standalone.jar 3001
抛出异常:
java.lang.UnsatisfiedLinkError:/usr/lib/nativedeps/so/libJavaASAPSDK.so:libprotobuf.so.6:无法打开共享对象文件:没有这样的文件或目录
这意味着找到了 lib JavaASAPSDK,但找不到另一个名为libprotobuf.so.6(JavaASAPSDK所依赖的)的 lib。
问题是两个库都在同一个目录中!
关于什么可能导致这个问题以及如何解决它的任何想法???