Java控制台无法正常工作:无法在AMD 64位平台上加载IA 32位.dll
因此,我有一个运行在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)
如何解决这个问题?我相当生疏,所以一步一步修复越详细越好。提前致谢。
很明显,你得到的错误是因为你的代码中的某些东西试图加载一个本地库(DLL),而你拥有的库是用于32位Windows,而你运行在64位。
查看Program.java
中的DosCommandLine.getCommandLine()
方法获取线索。如果您绝对需要该库提供的功能,那么您可以下载32位JRE并尝试运行它。
DosCommandLine方法是我的应用程序与之关联的acm jar文件的一部分。这是我创造的东西。我创建的所有东西,是我原来的帖子中包含的一种方法... – Utopia025 2012-02-07 22:19:38
@ Utopia025确定,但是'DosCommandLine'或者jar里面的东西都试图加载一个32位的库。 – 2012-02-08 00:19:48
在为我执行作品时切换到32位JRE。下面是关于如何做到这一点正是Eclipse中的步骤:
- 转到运行
- 转到运行配置
- 下JRE选项卡,你可以切换到32位JRE
我跑错了main或run方法的错误声明。 在标准的java:
public static void main(String [] args) {
}
从ACM库,我认为你应该使用ConsoleProgram:
public void run() {
}
所以run()
相反main()
的。所以与64bit jre无关。
问题是因为您使用的是32位版本的.dll文件,而您的JDK和平台是64位。 转到您的路径“C:\ Users \ scarr”,您会发现2个子文件夹,i386和x64。从x64或当前的.dll文件中复制GCMDLN.DLL以覆盖它。 我认为这个问题将得到解决。
你可以显示你的DOSCommandLine类吗? – 2012-02-07 18:17:17
我该怎么做? – Utopia025 2012-02-07 21:01:45
'acm.program.DOSCommandLine'是你的类还是来自lib? – 2012-02-07 21:09:09