我想将我的应用程序作为一个自包含的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加载的是什么。
有人可以帮助我吗?
由于
答案 0 :(得分:2)
一种方法是从第一个生成另一个Java进程,生成适当的调用脚本。
我知道,产生两个JRE实例以启动一个应用程序也不是我的首选。
答案 1 :(得分:0)
如果您使用的是Eclipse IDE,那么这个答案可能对您有帮助。
我在eclipse窗口遇到同样的问题,我无法从JNI添加依赖的.class文件。 在搜索了一段时间后,我开始知道“它是Eclipse中的已知错误”,为了解决这个问题,我将所有代码移植到NetBeans IDE。
Can not add all the classes files from the JNI folder in Eclipse (JAVA, Windows 7)