簡體   English   中英

Java控制台不起作用:無法在AMD 64位平台上加載IA 32位.dll

[英]Java Console not working: Can't load IA 32-bit .dll on a AMD 64-bit platform

因此,我有了運行在64位Windows 7操作系統上的Eclipse 3.7.1。 昨天一段時間以來,我第一次嘗試編寫程序,並不斷出現上述錯誤。 我將程序精簡到最低限度的初學者教程,但仍然出現錯誤。 我的程序現在是一個簡單的readInt()s並將它們添加在一起。

編碼:

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)

我該如何解決? 我很生疏,所以逐步修復越詳細越好。 提前致謝。

顯然,您得到的錯誤是因為代碼中的某些內容試圖加載本機庫(DLL),而您在64位運行時所擁有的庫適用於32位Windows。

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

執行時切換到32位JRE對我有效。 以下是有關如何在Eclipse中精確執行此操作的步驟:

  • 跑步
  • 轉到運行配置
  • JRE標簽下,您可以切換到32位JRE

問題是因為您使用的是32位版本的.dll文件,而JDK和平台是64位的。 轉到路徑“ C:\\ Users \\ scarr”,您將找到2個子文件夾i386和x64。 從x64或當前的.dll文件復制GCMDLN.DLL,以覆蓋它。 我認為這個問題將會解決。

我遇到了同樣的問題,因為main或run方法的聲明錯誤。 在標准Java中:

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

我認為從acm庫使用ConsoleProgram應該是:

public void run() {
}

所以用run()代替main() 因此與64bit jre無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM