我正在处理的项目是一个服务器端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:无法打开共享对象文件:没有这样的文件或目录
这意味着找到了库JavaASAPSDK,但是找不到另一个名为libprotobuf.so.6的库(JavaASAPSDK依赖于该库)。
问题是两个库都在同一个目录中!
关于什么会导致此问题以及如何解决的任何想法???
我通过删除解决了这个问题:
libprotobuf.so.6
然后创建一个名为“ libprotobuf.so.6”的符号链接到一个与libprotobuf.so.6完全相同的,名为libprotobuf.so.6.0.0的库。
然后,我在/etc/ld.so.conf.d/中创建了一个配置文件。
touch /etc/ld.so.conf.d/externalapibe.conf
并在其中写出我的本机库的路径:
/usr/lib/nativedeps/so
然后我跑了:
ldconfig -v | grep /usr/lib/nativedeps/so
后者从“ externalapibe.conf”读取我的本机deps的路径,然后将其中的本机库重新绑定。
这似乎可以完成工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句