我已经在 Eclipse 中创建了我的应用程序。它相当简单,总共包含大约 1000 行代码。我的类 MineAvtaler
包含我的主要功能。
我通过 Eclipse 的“运行”按钮成功运行了它。但是,每当我尝试从命令行运行代码时,我都会在标题中收到错误消息。我编译如下: javac MineAvtaler.java Avtaledata.java Avtale.java
并尝试像这样运行应用程序:
- java MineAvtaler
- javaw MineAvtaler.java
后者在消息框中而不是在控制台中给出错误消息。
为什么我的程序不能在 Eclipse 之外运行?
我使用的是 Windows 7 并安装了 JDK。这是我得到的堆栈跟踪:
C:\Users\Codemonkey1991\Desktop\mineavtaler>java MineAvtaler Avtaledata Avtale
Exception in thread "main" java.lang.NoClassDefFoundError: MineAvtaler (wrong name: mineavtaler/MineAvtaler)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: MineAvtaler. Program will exit.
*这是源代码:*
最佳答案
这是一个包的问题。 MineAvtaler
位于名为 mineavtaler
的包内(字符大小写相关),如源代码第一行中所述。因此,您可能有一个由 Eclipse 为您创建的名为 mineavtaler
的目录。这不是您为项目创建的目录,而是由 Eclipse 创建的“特殊”目录,其中放置您的 MineAvtaler.java
文件。
您不必在此处打开终端。相反,在父目录中打开它并运行:javamineavtaler.MineAvtaler
。这样应该可以工作。
编辑:从C:\Users\Codemonkey1991\Desktop\
运行javamineavtaler.MineAvtaler
调用“java”命令时,您始终必须观察包结构。请参阅http://download.oracle.com/javase/tutorial/java/package/packages.html了解更多信息。
关于java - "Could not find the main class: MineAvtaler. Program will exit."- 仅当在 Eclipse 外部运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875332/