2013-02-12 85 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位版本。