新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
当前回答
我遇到了同样的问题,最终发现了我的错误:)我使用此命令进行编译,并且运行正常:
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
其他回答
这就是我解决问题的方法。
我注意到,如果在编译中包含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
如果使用IntelliJ并在从IDE运行main方法时出错,只需确保类位于java包中,而不是kotlin中
如果您的情况与我的情况特别相似,这可能会对您有所帮助:作为初学者,我在尝试运行Java程序时也遇到了这个问题。
我是这样编译的:
javac HelloWorld.java
我也尝试使用相同的扩展名运行:
java Helloworld.java
当我删除.java并重写类似javaHelloWorld的命令时,程序运行得很好。:)
根据错误消息(“找不到或加载主类”),有两类问题:
找不到Main类无法加载Main类(在接受的答案中未充分讨论此情况)
当完全限定类名中存在拼写错误或语法错误,或者提供的类路径中不存在Main类时,找不到Main类。
当无法启动类时,无法加载Main类。通常,主类扩展另一个类,而该类不存在于提供的类路径中。
例如:
public class YourMain extends org.apache.camel.spring.Main
如果不包括骆驼弹簧,将报告此错误。
这是一个具体的案例:
Windows(通过Windows7测试)不接受类和包名称中的特殊字符(如á)。不过,Linux确实如此。
我在NetBeans中构建.jar并尝试在命令行中运行时发现了这一点。它在NetBeans中运行,但不在命令行上运行。