2012-02-07 99 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以覆盖它。 我认为这个问题将得到解决。

相关问题