遇到这个java.lang.UnsatisfiedLinkError:尝试在netbeans ide中运行java文件时,无法在IA 32位平台上加载AMD 64位.dll . 不知道从哪里开始调试和修复代码 .
源代码如下:
package demojni;
public class Main {
static {
System.load("C:\\Users\\Nicholas1\\Documents\\NetBeansProjects\\DemoJNI_Lib\\dist\\DemoJNI_Lib.dll"); // Load native library at runtime
// hello.dll (Windows) or libhello.so (Unixes)
}
// Declare a native method sayHello() that receives nothing and returns void
// Test Driver
public static void main(String[] args) {
new Main().sayHelloWorld(); // invoke the native method
}
private native void sayHelloWorld();
}
3 回答
Dll是针对64位(amd64或x86_64)平台/ cpu架构编译的,而您的Windows OS / JVM / JRE安装是32位 .
获取32位版本的dll或升级您的工作环境(OS或JVM / JRE安装
在我的情况下,我只是保证Tomcat的位与JDK的位相同 . 我认为这个错误对于eclipse和操作系统的编码工具无关紧要 .
解决了架构错误 .
Lamans解释:操作系统是64位,我有64位编译.dll库和32位JDK 1.6 . 还将我的JAVA_HOME变量从(JDK 1.6 32位)更新为(JDK 1.8 64位) .
将Java / JRE / JDK更改为64位环境
将Java / JRE / JDK环境升级到JDK 1.8
从"Netbeans 6.9.1"升级到"Netbeans 8.2"
升级的Netbeans "Default JDK"从"JDK 1.6"到JDK 1.8工作 .
注意:可以从IDE访问Tools-> Java Platforms-> Platforms找到Netbeans JDK版本,或使用链接“Changing java platform on which netbeans runs”更改netbeans的默认JDK .