2012-02-07 104 views
1

因此,我有一個運行在64位Windows 7操作系統上的Eclipse 3.7.1。昨天我第一次嘗試編寫一個程序,並不斷收到上述錯誤。我將我的程序細化到最低限度的初學者教程,並且仍然出現錯誤。我的程序現在是一個簡單的readInt(),並將它們加在一起。Java控制檯無法正常工作:無法在AMD 64位平臺上加載IA 32位.dll

代碼:

import acm.program.*; 

public class DBEditor extends ConsoleProgram { 

public void main() { 
    System.out.println("This adds two integers"); 
    int a = readInt("First Num: "); 
    int b = readInt("Second Num: "); 
    int total = a+ b; 
    System.out.println("The sum of the numbers is: " + total); 
} 

} 

試圖爲Java應用程序運行時錯誤:

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
C:\Users\scarr\GCMDLN.DLL: Can't load IA 32-bit .dll on a AMD 64-bit platform 

    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
    at java.lang.ClassLoader.loadLibrary(Unknown Source)  
    at java.lang.Runtime.load0(Unknown Source) 
    at java.lang.System.load(Unknown Source)  
    at acm.program.DOSCommandLine.getCommandLine(Program.java) 
    at acm.program.Program.getCommandLine(Program.java)  
    at acm.program.Program.main(Program.java) 

如何解決這個問題?我相當生疏,所以一步一步修復越詳細越好。提前致謝。

+0

你可以顯示你的DOSCommandLine類嗎? – 2012-02-07 18:17:17

+0

我該怎麼做? – Utopia025 2012-02-07 21:01:45

+0

'acm.program.DOSCommandLine'是你的類還是來自lib? – 2012-02-07 21:09:09

回答

2

很明顯,你得到的錯誤是因爲你的代碼中的某些東西試圖加載一個本地庫(DLL),而你擁有的庫是用於32位Windows,而你運行在64位。

查看Program.java中的DosCommandLine.getCommandLine()方法獲取線索。如果您絕對需要該庫提供的功能,那麼您可以下載32位JRE並嘗試運行它。

+0

DosCommandLine方法是我的應用程序與之關聯的acm jar文件的一部分。這是我創造的東西。我創建的所有東西,是我原來的帖子中包含的一種方法... – Utopia025 2012-02-07 22:19:38

+0

@ Utopia025確定,但是'DosCommandLine'或者jar裏面的東西都試圖加載一個32位的庫。 – 2012-02-08 00:19:48

0

在爲我執行作品時切換到32位JRE。下面是關於如何做到這一點正是Eclipse中的步驟:

  • 轉到運行
  • 轉到運行配置
  • JRE選項卡,你可以切換到32位JRE
0

我跑錯了main或run方法的錯誤聲明。 在標準的java:

public static void main(String [] args) { 
} 

從ACM庫,我認爲你應該使用ConsoleProgram:

public void run() { 
} 

所以run()相反main()的。所以與64bit jre無關。

1

問題是因爲您使用的是32位版本的.dll文件,而您的JDK和平臺是64位。 轉到您的路徑「C:\ Users \ scarr」,您會發現2個子文件夾,i386和x64。從x64或當前的.dll文件中複製GCMDLN.DLL以覆蓋它。 我認爲這個問題將得到解決。

相關問題