我在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 Files
和Program Files (x86)
下的dll做出了某些假设?
答案 0 :(得分:0)
这当然不是道路问题。唯一的问题是您正在使用的JavaVM版本。如果它是32位版本的Java,它将尝试将任何DLL加载为32位DLL,如果它是64位版本的Java,它将尝试将任何DLL加载为64位DLL。
所以,或者 - 您的系统上只安装了32位Java,并尝试加载64位DLL;要么 - 您安装了32位和64位Java,然后您需要确保使用64位版本进行测试。
您声称已成功使用其他文件夹中的DLL这一事实表明后者,因此请确保您使用的java可执行文件是64位版本。