Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用64位JDK 1.7.0加载64位dll_Java_Dll - Fatal编程技术网

Java 使用64位JDK 1.7.0加载64位dll

Java 使用64位JDK 1.7.0加载64位dll,java,dll,Java,Dll,我正在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 我将d

我正在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位于
程序文件(x86)
下,而java试图将其作为32位dll加载。JVM是否对
程序文件
程序文件(x86)
下的dll进行了某些假设?

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

所以,也 -您的系统上只安装了32位Java,并尝试加载64位DLL;或 -您同时安装了32位和64位Java,然后需要确保在测试中使用64位版本


您声称已成功使用了来自不同文件夹的DLL,这表明使用了后者,因此请确保您使用的java可执行文件是64位版本。

可能是文件路径中的空格?我不这么认为,它似乎找到了DLL,它只是试图将其加载为32位dll而不是64位dll。我只是说,因为我知道有时语言会抱怨路径中的空格(很多linux的东西都是这样的),我确实认为可以公平地说,它假设如果在x86文件夹中,它是32位的