【发布时间】:2012-04-03 04:30:33
【问题描述】:
E:\Code\Java\JNITest>java test
Exception in thread "main" java.lang.UnsatisfiedLinkError: E:\Code\Java\JNITest\test.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at test.main(test.java:16)`
在使用 Java Native Interface 时,我遇到了一个导致此错误的问题。我相信这是因为我用 MinGW 编译了 .dll,它编译为 32 位 .dll,而我的系统是 64 位的,因此我的 Java 运行在 64 位。 有没有办法强制我的 Java 以 32 位运行?
【问题讨论】:
-
您能说出您现在使用的 JRE/JDK 和操作系统版本(32/64 位;我怀疑您使用的是 Windows)吗?欲了解更多信息:forums.oracle.com/forums/thread.jspa?threadID=2271763
-
我使用的是 windows 7 Ultimate x86_64 和 x86 版本的 jdk1.7.0_03
-
要加载 32 位 DLL,您必须从 32 位应用程序例如32 位 Java。您可以在 64 位操作系统上运行 32 位应用程序,但反之则不行。
-
好的,我运行了 java -version,显然更改路径环境变量中的文件夹还不够。我使用了 32 位 java.exe 的地址,而不仅仅是 java 命令,它工作了
标签: java dll java-native-interface mingw