如何为整个Eclipse Project设置java.library.path?我正在使用依赖于OS特定文件的Java库,需要找到.dll/.so/.jnilib.但应用程序始终退出并显示错误消息,指出在库路径中找不到这些文件.
我想配置整个项目以使用库路径.我试图将路径作为VM参数添加到eclipse中的某些运行配置,但这不起作用.
我加载了一个放在里面的外部库./lib.这两个解决方案是否设置java.library.path等效?
执行jar时在控制台中设置路径:
java -Djava.library.path=./lib -jar myApplication.jar
Run Code Online (Sandbox Code Playgroud)在加载库之前在代码中设置路径:
System.setProperty("java.library.path", "./lib");
Run Code Online (Sandbox Code Playgroud)如果它们是等价的,为什么在第二个解决方案中Java可以找不到库而第一个可以?
如果没有,有没有办法在代码中设置路径?
我有一个java类,调用本机方法并尝试加载库:
import java.io.UnsupportedEncodingException;
public class Main {
public static native String getMyString(String s);
/**
* @param args
* @throws UnsupportedEncodingException
*/
public static void main(String[] args) throws UnsupportedEncodingException {
// TODO Auto-generated method stub
// System.out.println("here!");
String s2 = getMyString("string text");
for (Byte b : s2.getBytes("UTF-8")) {
System.out.print(b);
System.out.print(",");
}
}
static {
System.loadLibrary("mylib.so");
}
}
Run Code Online (Sandbox Code Playgroud)
"mylib.so"位于Main.class所在的目录中.
当我跑步时,java Main我得到以下异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylib.so in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
at Main.<clinit>(Main.java:24)
Run Code Online (Sandbox Code Playgroud)
我应该为此改变什么呢?
我试过设置库完整路径但没有成功