【问题标题】:Java Compiling Error:Java 编译错误:
【发布时间】: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


【解决方案1】:

对我来说它有效。请按照以下步骤操作:

Y:\HashmiAb\Desktop\Trash\test>javac come\example\atm\Atm.java

Y:\HashmiAb\Desktop\Trash\test>javac come\example\atm\AtmRun.java

Y:\HashmiAb\Desktop\Trash\test>java come.example.atm.AtmRun
Heloo

如何使用 javac 和 java 命令的 -d 和 -cp 选项很重要。我没有使用任何这些选项。

如需更多帮助,请查看目录结构。

+test
-+come
 -+example
  -+atm
   -AtmRun.java
   -Atm.java

谢谢。

【讨论】:

  • 我确实尝试过这样编译和运行它,我也尝试过使用 -d 和 -cp。但它仍然给了我 AtmRun.java:5: error: cannot find symbol... 我在问题中提到的。我不知道为什么它不工作一切都是直截了当的
  • 可以分享一下Atm.java和AtmRun.java的整个路径吗?
  • 没问题。放置两个 java 文件的前 10 行。还请您按照以下步骤使用目录编译和运行代码。
  • 整个类 AtmRun 都在那里,Atm 有声明和定义变量的构造函数。路径是 /Users/user/Dropbox/onlineWorkspace/Case study: ATM/src/come/example/atm
  • 步骤很简单。要么在 ecipse 中运行,要么在 ompiler 中使用 javac,没有什么要说明的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 2014-04-26
  • 2018-07-11
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
相关资源
最近更新 更多