2013-02-12 50 views
2

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

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进行了某些假设?

+0

可能是文件路径中的空格? – 2013-02-12 20:48:41

+0

我不这么认为,它似乎找到了DLL,它只是试图加载它作为一个32位的DLL而不是一个64位的DLL。 – 2013-02-12 20:49:41

+0

我刚才说过,因为我知道有时候语言会抱怨路径中的空间(很多linux的东西都是这样的),我认为这是公平的,它假设如果它在x86文件夹中是32位 – 2013-02-12 20:51:33

回答

0

这当然不是路径问题。唯一的问题是你正在使用什么版本的JavaVM。如果它是32位版本的Java,它会尝试加载任何DLL作为32位DLL,如果它是64位版本的Java,它会尝试加载任何DLL为64位DLL。

因此,要么 - 您的系统上只安装了32位Java,并尝试加载64位DLL;或 - 您已经安装了32位和64位Java,那么您需要确保使用64位版本进行测试。

事实上,你声称你已经成功地使用来自不同文件夹的DLL建议后者,所以确保你使用的java可执行文件是64位版本。