10

我无法将我的 java 项目从 eclipse 导出为 jar 可执行文件。我的 java 项目使用一个外部库(它称为 jri)。我已经导出了 jri.jar 文件并在 eclipse 中为其本地库设置了库路径,它在 eclipse 中的开发中效果很好。但是,当我将其导出为可执行 jar 文件时,出现以下错误:

Cannot find JRI native library!
Please make sure that the JRI native library is in a directory listed in java.library.path.

我已将一个名为 lib 的文件夹与我的项目的 jar 放在同一目录中;此 lib 文件夹包含 jri 的本机库。jri 的原生库不在一个文件中,而是在一个文件夹中。这与我在 Eclipse 中的设置相同。

我在 Eclipse 中导出项目的方式是

Export...
Java > Runnable JAR file
Copy required libraries into a sub folder next to the generated Jar
Finish

我的文件夹是这样组织的

folder project
  project.jar
  project_lib
    jri.jar
    jri native library folder  

我的 project.jar 的 MANIFEST.MF 是:

Manifest-Version: 1.0
Class-Path: . project_lib/jri.jar
Main-Class: index

我想要实现的是给另一个人一个文件夹,包括 project.jar 和其他任何需要的东西,这样她/他就可以运行它而无需安装任何其他东西。非常感谢

4

4 回答 4

8

添加一个包含类似内容的脚本:

#!/bin/bash
java -Djava.library.path=project_lib/native/ -jar project_lib/jri.jar

我以这种方式导出一些java项目。

于 2012-01-17T18:58:01.050 回答
3

这是相对难以实施的。我看到的解决方案涉及将 JAR 中的本机库提取到 OS 临时目录,然后加载它。我会为此寻求一个集成的解决方案。一个 JarJava 类加载器支持它,在第二页你会找到类似工具的链接。

于 2012-01-16T16:34:29.597 回答
1

您可以将库放在jar 中:

出口...

Java > 可运行的 JAR 文件

将所需的库打包到生成的 Jar 中

结束

我总是这样导出。我不知道它是否适用于您的情况,但值得一试。


编辑:

请参阅以下链接:

我的猜测是,这与 LD_LIBRARY_PATH 未正确设置有关。或者它正在搜索的文件不在列出的路径中。

于 2012-01-13T16:11:09.450 回答
0

你知道我有类似的问题

Could not extract native JNI library.

以上所有建议都帮不了我。我无法使用以下命令停止和启动 gradle deamon:

gradle --stop

我看到 gradle deamon 在我的进程中仍然没有停止。这就是为什么我在我的过程中杀死它,一切都会好起来的:)

于 2016-09-08T12:39:33.347 回答