【问题标题】:java.lang.UnsatisfiedLinkError: Can't load AMD 64-bit .dll on a IA 32-bit platformjava.lang.UnsatisfiedLinkError:无法在 IA 32 位平台上加载 AMD 64 位 .dll
【发布时间】:2018-12-20 10:07:53
【问题描述】:

遇到这个 java.lang.UnsatisfiedLinkError: Can't load AMD 64-bit .dll on a IA 32-bit platform when trying to run java file in netbeans 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();
}

【问题讨论】:

    标签: java netbeans java-native-interface unsatisfiedlinkerror


    【解决方案1】:

    Dll 编译为 64 位(amd64 或 x86_64)平台/cpu 架构,而您的 Windows 操作系统/JVM/JRE 安装为 32 位。

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

    【讨论】:

    • 很好,感谢您的及时回复。我的操作系统是 Windows 8 64 位,我如何检查 JRE 的版本。 JRE 也是 32 位的,那么如何将 JRE 升级到 64 位?
    • 我用命令提示符运行 java -version,它返回的是版本而不是 xx 位; java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) Client VM (build 25.121-b13,混合模式,共享)
    • 很好,它返回“32”。怎么办?我是否只升级我机器上的 JRE,如果是,如何升级?
    • 删除 JRE 安装并确保从此处下载 x64 版本 - oracle.com/technetwork/java/javase/downloads/…。完成后也请接受我的回答:)
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      解决了架构错误。

      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“默认 JDK”从“JDK 1.6”升级到 JDK 1.8。

      注意:Netbeans JDK 版本可以从 IDE 访问 Tools->Java Platforms->Platforms 或使用链接“Changing java platform on which netbeans runs”更改 netbeans 的默认 JDK。

      【讨论】:

      • ``` C:\Users\Nicholas1\Documents\NetBeansProjects\DemoJNI\hs_err_pid34736.log ``` 里面有什么?您是否能够编译您的应用程序/代码并单独运行它?
      • 线程信息,非常类似于这个链接stackoverflow.com/questions/9986227/…。有人说它是一个 JRE 错误。当我将 Netbeans-6.9.2 IDE 默认 JDK 更改为 JDK 1.7 时,我没有收到相同的运行时项目错误。但是当我将 Netbeans-6.9.2 IDE 默认 JDK 更改为 JDK jdk1.8.0_111 Netbeans 在重启时崩溃。我使用此链接更改 Netbeans 的默认 JDK:stackoverflow.com/questions/2809366/…
      • 这里是我的错误的链接:stackoverflow.com/questions/43313847/… 现在我可以编译和运行我的项目的干净/构建,但没有成功运行。我的其他 java 项目也运行良好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多