在eclipse中使用额外的本机代码库导出到Runnable jar

时间:2012-01-11 00:16:46

标签: java eclipse jar jri nativelibrary

我无法将我的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 个答案:

答案 0 :(得分:8)

添加包含以下内容的脚本:

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

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

答案 1 :(得分:3)

这相对难以实施。我见过的解决方案涉及将JAR中的本机库解压缩到OS临时目录,然后加载它。我会为此寻求综合解决方案。 One JarJava Class Loader支持它,在第二页上您可以找到类似工具的链接。

答案 2 :(得分:1)

您可以将放在jar中:

  

导出...

     

Java> Runnable JAR文件

     

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

中      

完成

我总是以这种方式出口。 我不知道它是否适用于您的情况,但值得一试。


修改

请参阅以下链接:

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

答案 3 :(得分:0)

你知道我有类似的问题

Could not extract native JNI library.
以上所有建议都无法帮助我。我无法停止并使用以下命令启动gradle deamon:

gradle --stop

我看到gradle deamon仍未在我的进程中停止。这就是为什么我在我的过程中杀了它并且一切都会好的。)