Java 当我运行下面的代码时,它会抛出一个异常,为什么?
代码:Java 当我运行下面的代码时,它会抛出一个异常,为什么?,java,java-native-interface,Java,Java Native Interface,代码: 如果使用注释代码而不是System.load(“/usr/lib/libJniTest.so”),它将引发异常: public class JniTest { static { System.load("/usr/lib/libJniTest.so"); //It run have no exception and true //System.loadLibrary("libJniTest"); } public
如果使用注释代码而不是System.load(“/usr/lib/libJniTest.so”),它将引发异常:
public class JniTest {
static {
System.load("/usr/lib/libJniTest.so"); //It run have no exception and true
//System.loadLibrary("libJniTest");
}
public native void sayHello();
public static void main(String[] args) {
System.out.println(System.getProperties().getProperty("java.library.path"));
new JniTest().sayHello();
}
}
我有意见
Exception in thread "main" java.lang.UnsatisfiedLinkError: no libJniTest in java.library.path!
请帮帮我!使用以下参数设置VM参数:
export LD_LIBRARY_PATH=/usr/lib in /etc/profile and set vm arguments:
-Djava.library.path=/usr/lib
并确保.so应该在您的项目文件夹中您是否尝试过
System.load(JniTest.class.getClass().getResource(“/usr/lib/libJniTest.so”).toString();
?因为我看到libJniTest.so在您的类包之外。如果使用注释代码而不是“System.load(“/usr/lib/libJniTest.so”),它会扔exception@Azad这个建议开始没有意义了。您不能从JAR文件加载.so文件,也不能从URL加载它们getResource()
返回一个URL,
和load()
需要一个路径参数,而不是URL。我已经将libJniTest.so复制到java.library.path目录!如果继续,我想重新启动我的计算机@lxj没有“java.library.path”目录。它是您设置为指向库的系统属性。
-Djava.library.path="${workspace_loc}/project_name:${env_var:PATH}"