Java控制台不工作:Can';t在AMD 64位平台上加载IA 32位.dll
所以我有Eclipse3.7.1,运行在64位Windows7操作系统上。昨天,我第一次尝试编写一个程序,但一直出现上述错误。我将我的程序细化为一个最低限度的初学者教程,但仍然会遇到错误。我的程序现在是一个简单的readInt()并将它们添加到一起 守则:Java控制台不工作:Can';t在AMD 64位平台上加载IA 32位.dll,java,dll,compiler-errors,runtime-error,Java,Dll,Compiler Errors,Runtime Error,所以我有Eclipse3.7.1,运行在64位Windows7操作系统上。昨天,我第一次尝试编写一个程序,但一直出现上述错误。我将我的程序细化为一个最低限度的初学者教程,但仍然会遇到错误。我的程序现在是一个简单的readInt()并将它们添加到一起 守则: import acm.program.*; public class DBEditor extends ConsoleProgram { public void main() { System.out.println("This
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并尝试使用它运行。很明显,您遇到的错误是因为代码中的某些内容试图加载本机库(DLL),而您拥有的库在64位运行时是用于32位Windows的
查看
Program.java
中的DosCommandLine.getCommandLine()
方法以获取线索。如果您确实需要该库提供的功能,那么您可以下载32位JRE并尝试使用它运行。在为我执行works时切换到32位JRE。以下是如何在Eclipse中准确执行此操作的步骤:
- 跑
- 转到运行配置
- 在JRE选项卡下,您可以切换到32位JRE
- 跑
- 转到运行配置
- 在JRE选项卡下,您可以切换到32位JRE
public static void main(String [] args) {
}
使用acm库中的ConsoleProgram,我认为您应该:
public void run() {
}
所以
run()
而不是main()
。因此,与64位jre无关,我在相同的问题中使用了错误的main或run方法声明。
在标准java中:
public static void main(String [] args) {
}
使用acm库中的ConsoleProgram,我认为您应该:
public void run() {
}
所以
run()
而不是main()
。因此,与64位jre无关,问题在于您使用的是32位版本的.dll文件,而您的JDK和平台是64位的。
转到路径“C:\Users\scarr”,您将找到两个子文件夹:i386和x64。从x64或当前的.DLL文件复制GCMDLN.DLL以覆盖它。
我认为这个问题会得到解决。这个问题是因为您使用的是32位版本的.dll文件,而您的JDK和平台是64位的。 转到路径“C:\Users\scarr”,您将找到两个子文件夹:i386和x64。从x64或当前的.DLL文件复制GCMDLN.DLL以覆盖它。
我想问题会解决的。你能展示你的DOSCommandLine类吗?
acm.program.DOSCommandLine
是你的类还是库?它来自库。acm jar包含该类。它不是我创建的类。您能显示您的DOSCommandLine类吗?acm.program.DOSCommandLine
是您的类还是库?它来自库。acm jar包含该类。DosCommandLine方法是与我的应用程序关联的ACMJAR文件的一部分。这不是我创造的。我所创建的只是我的原始帖子中包含的一个方法…@Utopia025好的,但是,doscondline
或jar中的某个东西正在尝试加载一个32位库。doscondline方法是我的应用程序关联的acm jar文件的一部分。这不是我创造的。我所创建的只是我的原始帖子中包含的一个方法…@Utopia025好的,但是,doscondline
或jar中的某个东西正在尝试加载一个32位的库。