我正在构建一个共享库,它将在Ubuntu 14.04 x64下使用JNI从Java IntelliJ调用。
在Intellij中使用System.loadLibrary("libtestJniLib")
调用我的.so文件时出现以下错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no
libtestJniLib in java.library.path
Intellij配置确定库的路径:
1) Run->Edit Configurations->VM options: -Djava.library.path=/home/username/Libs
2) In "Project structure -> Libraries ->Native library locations"
我添加了相同的路径:/home/username/Libs
使用下面提到的方法测试时,我有一个正确的路径。
String javaLibPath = System.getProperty("java.library.path");
IntelliJ是在root下开始的。
答案 0 :(得分:2)
使用System.LoadLibrary()
加载共享库时,以下内容适用:
加载libname参数指定的系统库。 方式 其中库名称映射到实际系统库是 系统依赖。
我可以找到该映射的最佳描述是here:
每个Java运行时环境都提供了一种依赖于平台的机制 用于在共享库的实际文件名和。之间进行映射 您作为参数传递给System.loadLibrary的名称字符串 方法
的Solaris:
共享库文件名需要“lib”前缀和“.so” 延期。不要包含“lib”前缀或“.so”扩展名 您传递给
System.loadLibrary
方法的参数。Microsoft Windows:
共享库文件名需要“.dll”扩展名 不要包含
System.loadLibrary
方法的“.dll”扩展名 参数。