java so linux_如何在Linux中将.so文件添加到java.library.path

如何在Linux中将.so文件添加到java.library.path

我正在使用一个Java应用程序,该应用程序需要Windows中java.library.path中的.so文件。 要在Linux中运行相同的应用程序,我有相应的java.library.path文件,应将其添加到Linux机器中的java.library.path中,到目前为止,我没有找到任何简单的解决方案

我确实将.so放在了已经在类路径中的文件夹中,但是我的应用程序仍然抱怨java.library.path中没有必需的java.library.path文件

我想找到:

将.so添加到java.library.path的方法

如何知道它是否已经添加(添加时)

5个解决方案

61 votes

启动应用程序之前,将包含目录添加到java -XshowSettings:properties

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/some/pathOfContainingDirectory

使用java -XshowSettings:properties显示java.library.path(及其他)值。

Jose Luis Martin answered 2020-07-31T08:42:33Z

6 votes

我在解决这个问题时遇到了很多麻烦,请确保您在库名称中具有mv JNIDemo.so libJNIDemo.so前缀。

所以,

mv JNIDemo.so libJNIDemo.so

重命名库以lib为前缀。 [将其作为构建脚本的一部分添加]

mv JNIDemo.so libJNIDemo.so

检查此答案以获取详细说明[https://stackoverflow.com/a/3987567/2076566]

teardrop answered 2020-07-31T08:43:07Z

3 votes

我使用java -XshowSettings:properties方法,找到了先前设置的文件夹的路径,并将我的so文件复制到了该文件夹

Ravindu answered 2020-07-31T08:43:27Z

0 votes

File file = null;

private String[] libs_path = System.getProperty("java.library.path").split(":");

public boolean isInstalled() {

boolean isInstalled = false;

for(String lib : libs_path) {

file = new File(lib+"/"+"yourlib.so");

if(file.exists()) {

isInstalled = true;

break;

}

}

return isInstalled;

}

public void install() {

if(!isInstalled) {

for(String lib: lib_path) {

// copy your .so to lib

break;

}

}

}

Ardika Rommy Sanjaya answered 2020-07-31T08:43:43Z

0 votes

我认为这是一种更好的方法,因为它只需要创建一个链接,无需文件编辑,在应用程序运行之前无需导出或运行源代码。 而且不需要bashrc行。

就是说,如果您升级它,可能会导致将来的Java版本意外错误,因为它可能会加载过时的库,尽管删除一个链接也可以解决此问题。

这在安装了Java 11 opensdk的ubuntu 18.04下工作。

$ locate libjawt.so

$ java -XshowSettings:properties

从上面的两个命令中,您可以找到将其调整到自己的系统所需的两条路径。

sudo ln -s /path/from/locate/libjawt.so /path/from/properties/libawt.so

我为java ll open sdk创建了一个符号链接,以找到该库,而我的代码如下,因为/ usr / lib是输出中的路径之一。 如果要将Java库(甚至符号链接)保持在一起,则可以在我的输出中选择一个Java路径来代替/ usr / lib。

sudo ln -s /usr/lib/jvm/java-11-openjdk-amd64/lib/libjawt.so /usr/lib/libjawt.so

Chris answered 2020-07-31T08:44:21Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值