Sma*_*ajl 5 java gradle 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
Run Code Online (Sandbox Code Playgroud)
如果我从命令行按顺序运行这两个命令,则该项目有效:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/lib
./gradlew bootRun
Run Code Online (Sandbox Code Playgroud)
该库已加载并运行。但是我无法在我的 gradle 文件中指定库路径。我试过
run {
systemProperty 'java.library.path', file('/path/to/lib')
}
bootRun {
systemProperty 'java.library.path', file('/path/to/lib')
}
Run Code Online (Sandbox Code Playgroud)
以及各种变体。还尝试向我的 IDE 等添加 VM 参数,但没有任何效果。有人可以解释我做错了什么吗?
这是我加载本机库(位于$projectRoot/lib
)的方式:
static {
// load connector library
File lib = new File("lib/" + System.mapLibraryName("connector"));
System.load(lib.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)
我终于解决了我的问题。运行应用程序时,我应该LD_LIBRARY_PATH
作为环境变量而不是系统属性传递。java.library.path
以下 Gradle 修改解决了我的问题:
tasks.withType(JavaExec) {
environment('LD_LIBRARY_PATH', 'lib')
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7660 次 |
最近记录: |