【问题标题】:.so in a .jar (Eclipse).so 在 .jar (Eclipse) 中
【发布时间】:2013-10-02 14:18:34
【问题描述】:

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

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

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

【问题讨论】:

  • 您会遇到一个问题,即您将该应用程序分发到 linux 以外的地方。顺便说一句,System.loadLibrary 不适用于内部 jar 库

标签: java eclipse jar shared-libraries


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多