java.lang.UnsatisfiedLinkError: Can't load AMD 64-bit .dll on a IA 32-bit platform

java.lang.UnsatisfiedLinkError: Can't load AMD 64-bit .dll on a IA 32-bit platform

遇到这个java.lang.UnsatisfiedLinkError:尝试在 netbeans 中 运行 java 文件时无法在 IA 32 位平台上加载 AMD 64 位 .dll ide.不确定从哪里开始调试和修复代码。

源码如下:

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();
}

Dll 编译为 64 位(amd64 或 x86_64)platform/cpu 架构,而您的 windows OS/JVM/JRE 安装 is/are 32 位。

获取 32 位版本的 dll 或升级您的工作环境(OS 或 JVM/JRE 安装

解决了架构错误。

Laman 对错误的解释:OS 是 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。

注意:Netbeans JDK 版本可以从 IDE 访问工具 ->Java 平台 -> 平台或使用 link "Changing java platform on which netbeans runs" 找到更改 netbeans 的默认值 JDK。

在我的情况下,我只是保证 Tomcat 的位与 JDK 的位相同。我认为这个错误对eclipse等编码工具和操作系统的位无关紧要。