使用Spring Boot加载本地库

我有一个简单的Spring Boot" title="Spring Boot">Spring Boot项目,可以加载本机库。问题是我不知道在运行应用程序时如何指定本机库的路径。

我读了无数的帖子,解释了如何设置,java.library.path但是每一个都会导致

java.lang.UnsatisfiedLinkError: /path/to/lib/libconnector.so: libconnector.so: cannot open shared object file: No such file or directory

如果我从命令行按顺序运行以下两个命令,则该项目有效:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib

./gradlew bootRun

该库已加载并可以工作。但是我无法在我的gradle文件中指定库路径。我试过了

run {

systemProperty 'java.library.path', file('/path/to/lib')

}

bootRun {

systemProperty 'java.library.path', file('/path/to/lib')

}

以及各种变化。还尝试将VM参数添加到我的IDE等,但没有任何效果。有人可以解释我在做什么错吗?

这就是我加载本地库(位于中$projectRoot/lib)的方式:

static {

// load connector library

File lib = new File("lib/" + System.mapLibraryName("connector"));

System.load(lib.getAbsolutePath());

}

回答:

我终于解决了我的问题。运行应用程序时,我应该将其LD_LIBRARY_PATH作为环境变量而不是java.library.path作为系统属性传递。

以下Gradle修改解决了我的问题:

tasks.withType(JavaExec) {

environment('LD_LIBRARY_PATH', 'lib')

}

以上是 使用Spring Boot加载本地库 的全部内容, 来源链接: utcz.com/qa/416535.html

回到顶部