0

我正在尝试从 cmd 运行 Java 应用程序,但出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: Main
    Caused by: java.lang.ClassNotFoundException: Main
    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: Main.  Program will exit.

在目录中,您可以找到:

Directory of C:\Java

AVLNode.java
AVLTree.java
Comparator.java
HashTable.java
input1.dat
input2.dat
Main.java
StringComparator.java

我正在跑步:

java Main input1.dat input2.dat  output1.dat

我在文件夹中有 Main.Java,我有:

public static void main(String[] args)Main.Java 上的方法(以及更多功能)

我已经在这里阅读了有关此问题的答案,但我认为我做的一切都很好:(那可能是什么问题?

4

5 回答 5

1

as stated in another answer check if Main.class is present in current directory

also try java -cp . Main arg1 arg2

above line sets classpath to current directory

于 2012-06-14T09:15:33.343 回答
1

Main.class检查当前目录中是否有文件。如果它已经存在,请检查path系统环境变量中的变量。它应该指向JAVA_HOME\bin

于 2012-06-14T09:13:04.817 回答
1

首先确保你已经编译了你的代码。

您应该在包含 Main.class 的目录中(如果您使用的是 eclipse IDE,它将是 bin/)。

如果你的 Main 类在一个包中,你应该从包含包的目录运行你的命令,你的命令将是 java [package name].Main [arguments]

如果你想从任何地方运行你的命令,你可以使用 -cp 选项,如下所示:

java -cp [classpath] [package name].Main [arguments]

with classpath :包含 .class 的目录的路径,直到包之前

于 2012-06-14T09:22:14.767 回答
0

看起来你还没有编译你的代码。尝试以下操作:

cd Java
javac Main.java

这应该在 Java 目录中创建 .class 文件。然后,在不更改目录的情况下,尝试:

java Main input1.dat input2.dat output1.dat
于 2012-06-14T12:00:15.190 回答
0

除了其他人建议的内容外,请检查您是否packageMain. 如果是这样,您必须在启动程序时包含它。

例如,如果您有:

package mypackage;

public class Main
{
    public static void main (String[] affhf)
    {

    }
}

那么你必须通过调用来启动你的程序:

java mypackage.Main input1.dat input2.dat output1.dat

在某些情况下,这可能会在编译过程中溜走......

于 2012-06-14T09:29:02.877 回答