【发布时间】:2014-11-27 10:47:10
【问题描述】:
我正在研究 Deitel java 如何编程第 9 版的 ATM 案例研究。
案例研究在第 13 章,第 546 页(以防有人拥有这本书并想查看),我确信我的代码 100% 符合书中的建议。
我已经设置了所有代码,但是当我尝试运行程序时,它给了我这个:
Error: Could not find or load main class come.example.atm.AtmRun
当我尝试使用终端从类路径编译类时,它给了我这个错误:
localhost:atm user$ javac AtmRun.java
AtmRun.java:5: error: cannot find symbol
Atm theATM = new Atm();
^
symbol: class Atm
location: class AtmRun
AtmRun.java:5: error: cannot find symbol
Atm theATM = new Atm();
^
symbol: class Atm
location: class AtmRun
2 errors
这是正在运行的课程:直截了当,但我似乎找不到问题所在。有什么帮助吗?
package come.example.atm;
public class AtmRun {
public static void main (String[] args){
Atm theATM = new Atm();
theATM.run();
}
}
更新:当我使用命令 java AtmRun 从项目的 bin 目录运行 .class 文件时,我得到这个:
Exception in thread "main" java.lang.NoClassDefFoundError: AtmRun (wrong name: come/example/atm/AtmRun)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Class Atm 有一个构造函数 Atm() 和 public void run() 以及其他方法,这个类很大,所以我认为如果我不发布代码会更好,但是如果可以的话,你可以在书中查看.
注意:我正在使用eclipse,其他项目和类都可以正常运行。
【问题讨论】:
-
你确定“come”是正确的,在“come.example.atm”等?
-
Atm类的包是什么? -
确保将
.class文件的位置添加到类路径中。 -
是的,它是正确的,这是一个输入错误而不是 com,但它只是一个包名称,所以它可以是任何东西。 Atm与AtmRun具有相同的包
标签: java compilation compiler-errors