使用64位JDK 1.7.0加载64位dll

时间:2013-02-12 20:47:17

标签: java dll nativelibrary

我在Windows 7上使用Java 1.7.0并尝试加载C:/Program Files (x86)/Common Files/app_name/中的64位dll。我收到以下错误

 Exception in thread "main" java.lang.UnsatisfiedLinkError:
 C:\Program Files (x86)\Common Files\app_name\app.dll: %1
 is not a valid Win32 application

我将dll复制到另一个目录(即C:\Temp)并且能够加载dll就好了。我认为这个错误是因为dll位于Program Files (x86)之下,而java正试图将其加载为32位dll。 JVM是否对Program FilesProgram Files (x86)下的dll做出了某些假设?

1 个答案:

答案 0 :(得分:0)

这当然不是道路问题。唯一的问题是您正在使用的JavaVM版本。如果它是32位版本的Java,它将尝试将任何DLL加载为32位DLL,如果它是64位版本的Java,它将尝试将任何DLL加载为64位DLL。

所以,或者 - 您的系统上只安装了32位Java,并尝试加载64位DLL;要么 - 您安装了32位和64位Java,然后您需要确保使用64位版本进行测试。

您声称已成功使用其他文件夹中的DLL这一事实表明后者,因此请确保您使用的java可执行文件是64位版本。