Phi*_*ppe 6 java dll java-native-interface jar shared-libraries
我想将我的应用程序作为一个自包含的jar文件发送.jar文件应包含所有类文件,以及两个共享库.其中一个共享库是为JNI编写的,实质上是另一个共享库(100%C).
我首先尝试运行没有库的jar文件,但可以通过LD_LIBRARY_PATH环境变量访问它们.这工作得很好.
然后我将JNI库放入jar文件中.我已经阅读过从jar文件中加载库,首先将它们复制到一些临时目录,这对我来说效果很好(请注意,100%C库,我想,像以前一样加载).
现在我想将两个库放入jar中,但我不明白如何确保它们都被加载.当然我可以将它们都复制到一个临时目录,但当我加载"间接"时,它总是给我:
java.lang.UnsatisfiedLinkError:/tmp/.../libindirect.so:/libpure.so:无法打开共享对象文件:没有这样的文件或目录
我试图通过在其临时文件上明确地调用System.load(...)来强制JVM加载"100%C"库,但这样做效果不佳.我怀疑系统在解析libindirect.so中的链接时正在寻找它,但不关心JVM加载了什么.
那个人可以帮助我吗?
谢谢
一种方法是从第一个 Java 进程生成另一个 Java 进程,生成适当的调用脚本。
我知道,生成两个 JRE 实例来启动一个应用程序也不是我的第一选择。