Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在eclipse中使用额外的本机代码库导出到可运行jar_Java_Eclipse_Jar_Jri_Java.library.path - Fatal编程技术网

Java 在eclipse中使用额外的本机代码库导出到可运行jar

Java 在eclipse中使用额外的本机代码库导出到可运行jar,java,eclipse,jar,jri,java.library.path,Java,Eclipse,Jar,Jri,Java.library.path,我很难将我的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 jav

我很难将我的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相同的目录中;此库文件夹包含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  
my project.jar的MANIFEST.MF是:

Manifest-Version: 1.0
Class-Path: . project_lib/jri.jar
Main-Class: index
我想要实现的是给另一个人一个文件夹,包括project.jar和其他需要的东西,这样她/他就可以运行它,而不需要安装任何其他东西。
非常感谢

您可以将库放入您的罐子中

出口

Java>可运行JAR文件

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

完成

我总是这样出口。 我不知道这对你是否有效,但值得一试


编辑:

请参阅以下链接:


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

这相对难以实现。我看到的解决方案包括将JAR中的本机库提取到OS temp目录,然后加载它。我会为此寻求一个集成的解决方案。并支持它,在第二页上,您将找到类似工具的链接。

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

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

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

你知道我也有类似的问题

Could not extract native JNI library.
以上这些都帮不了我。我无法使用以下命令停止和启动gradle deamon:

gradle --stop

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

如果你讨厌使用它,就不要责备它。如果eclipse出了问题,那可能是您的错,而不是eclipse。检查这个类似的答案,它可能会有所帮助。您是否尝试将project_lib/jri_native_library_文件夹添加到manifest.mf类路径中?@KJP我将尝试一下now@KJP我没有得到更好的结果,我想这是因为问题出在库路径上,而不是类路径上。我已经尝试过了,但它不起作用,请记住,外部包的本机库位于一个文件夹中,java.library.path需要访问它。您是对的,据我所知,java无法从JAR文件加载JNI库(.dll、.so等)。您提到的解决方案在运行时提取相关文件,以便Java能够加载它们。