我正在尝试从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,我有:
Main.Java上的 public static void main(String[] args)
方法(以及一些其他函数)
我已经阅读了answers about this problem here,但我认为我做的一切都很好:(那么问题是什么?
答案 0 :(得分:1)
检查当前目录中是否有Main.class
个文件。如果已经存在,请检查系统环境变量中的path
变量。它应该指向JAVA_HOME\bin
。
答案 1 :(得分:1)
如另一个答案中所述,检查当前目录中是否存在Main.class
也尝试java -cp . Main arg1 arg2
以上行将classpath设置为当前目录
答案 2 :(得分:1)
首先确保您已编译代码。
您应该在包含Main.class的目录中(如果您使用的是eclipse IDE,它将是bin /)
如果您的Main类在一个包中,您应该从包含该包的目录运行您的命令,您的命令将是java [包名] .Main [arguments]
如果要从任何地方运行命令,可以使用-cp选项,如下所示:
java -cp [classpath] [package name].Main [arguments]
with classpath:包含.class的目录的路径,直到包
之前答案 3 :(得分:0)
除了其他人建议的内容之外,请检查package
中是否有Main
个语句。如果是这样,您必须在启动程序时包含它。
例如,如果你有:
package mypackage;
public class Main
{
public static void main (String[] affhf)
{
}
}
然后你必须通过以下方式启动你的程序:
java mypackage.Main input1.dat input2.dat output1.dat
在某些情况下,编译过程可能会失误......
答案 4 :(得分:0)
看起来您还没有编译代码。请尝试以下方法:
cd Java
javac Main.java
这应该在Java目录中创建.class文件。然后,在不更改目录的情况下,尝试:
java Main input1.dat input2.dat output1.dat