0

我有一个 C 项目。我将其编译为库(.so),并使用 JNI 将其导入到 java 项目中。一切进行得都很顺利。但我想将它编译成一个 .jar 文件,这样我就可以分发它,而用户不必创建实现 C 函数的 Java 类(使用 JNI)。所以我尝试这样做,但是当我尝试再次编译时(在一个干净的项目中,.jar 包含类和 .so)类(来自 jar)不再找到 .so,符号不被认可。我不希望用户手动将 .so 链接到 jar(在 Eclipse 或其他中)。

我对java或eclipse没有太多经验,所以我很迷茫。

有人有答案或有什么可以帮助我的吗?

4

1 回答 1

1

大多数操作系统上的动态链接器不会从压缩档案中加载库;您必须将 .so 提取到文件中才能加载它,例如在临时文件的目录中。

之后,您必须使用 System.load 来加载 .so,因为它不会在库搜索路径中。

这种麻烦的替代方法是使用 jnlp 分发应用程序:web start 应用程序将下载、设置和运行您的应用程序,您不必担心自己提取任何内容。本机库与nativelib元素一起添加。http://docs.oracle.com/javase/7/docs/technotes/guides/javaws/developersguide/syntax.html

于 2013-10-02T14:47:38.570 回答