新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
当前回答
如果是Maven项目:
转到POM文件。删除所有依赖项。保存POM文件。再次只导入必要的依赖项。保存POM文件。
这个问题应该消失。
其他回答
这就是我解决问题的方法。
我注意到,如果在编译中包含jar文件,那么将当前目录(./)添加到类路径中会有帮助。
javac -cp "abc.jar;efg.jar" MyClass.java
java -cp "abc.jar;efg.jar" MyClass
vs.
javac -cp "**./**;abc.jar;efg.jar" MyClass.java<br>
java -cp "**./**;abc.jar;efg.jar" MyClass
我遇到了同样的问题,最终发现了我的错误:)我使用此命令进行编译,并且运行正常:
javac -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode.java
但这个命令对我不起作用(我找不到或加载主类qrcode):
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar" qrcode
最后,我只在类路径末尾添加了“:”字符,问题就解决了:
java -cp "/home/omidmohebbi/AAAATest/jars/core-1.7.jar:/home/omidmohebbi/AAAATest/jars/javase-1.7.jar:/home/omidmohebbi/AAAATest/jars/qrgen-1.2.jar:" qrcode
类文件位置:C:\test.com\company
文件名:Main.class
完全限定类名:com.company.Main
命令行命令:
java -classpath "C:\test" com.company.Main
请注意,类路径不包括.com\company。
在我的例子中,我只是在Eclipse中更改JRE。
请查找随附的屏幕截图:
场景:使用命令提示符(Windows中的CMD)编译并运行一个简单的“java”程序,该程序只有“Main.java”文件,并指定了“packagemain”。
源文件路径:
某些项目名称文件夹\src\main\main.java
目标文件夹:
某些项目名称文件夹\dest
目标文件路径(文件夹'\main'和文件'\main.class'将由'javac'生成):
某些项目名称文件夹\dest\main\main.class
Main.java如下:
package main;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
编制:
// 'javac' compiler will produce 'Main.class' in the 'dest\main' folder.
// 'main' folder is created because in the source file(in our case: 'Main.java') is
// specified 'package main'.
javac -d ./dest ./src/main/Main.java
运行编译文件(在本例中为“Main.class”):
// '-cp'(is the same as '-classpath')
// './dest'(means destination folder, where resides compiled 'Main.class').
// 'main.Main'(means 'package' 'main', which contains class 'Main'('Main.class'))
// WARNING: when run 'java' class, MUST NOT type extension '.class'
// after 'class name
// (in our case: 'main.Main'(<package>.<class-name>) WITHOUT extension
// '.class').
java -cp ./dest main.Main
// Hello world