新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
新Java开发人员遇到的一个常见问题是,他们的程序无法运行,并显示错误消息:无法找到或加载主类。。。
这意味着什么,是什么导致的,你应该如何解决?
当前回答
使用此命令:
java -cp . [PACKAGE.]CLASSNAME
示例:如果类名是从Hello.java创建的Hello.class,则使用以下命令:
java -cp . Hello
如果文件Hello.java位于com.demo包中,请使用以下命令
java -cp . com.demo.Hello
在JDK8中,类文件多次出现在同一文件夹中,但java命令需要类路径,因此我们添加了-cp。将当前文件夹作为类路径的参考。
其他回答
根据错误消息(“找不到或加载主类”),有两类问题:
找不到Main类无法加载Main类(在接受的答案中未充分讨论此情况)
当完全限定类名中存在拼写错误或语法错误,或者提供的类路径中不存在Main类时,找不到Main类。
当无法启动类时,无法加载Main类。通常,主类扩展另一个类,而该类不存在于提供的类路径中。
例如:
public class YourMain extends org.apache.camel.spring.Main
如果不包括骆驼弹簧,将报告此错误。
如果使用IntelliJ并在从IDE运行main方法时出错,只需确保类位于java包中,而不是kotlin中
在Windows上放置。;在开头的CLASSPATH值处。
这个(dot)表示“查看当前目录”。这是一个永久的解决方案。
此外,您还可以通过设置CLASSPATH=%CLASSPATH%;将其设置为“一次”;。。这将在cmd窗口打开时持续。
我在IntelliJ中创建的演示程序遇到了这个问题。
解决这个问题有两个关键点:
程序的包名终端/cmd提示符的当前工作目录
我的演示程序:
package io.rlx.tij.c2;
public class Ex10 {
public static void main(String[] args) {
// do something
}
}
源代码路径:
../projectRoot/src/main/java/io/rlx/tij/c2/Ex10.java
转到java目录:cd/项目根/src/main/java编译到类:javac/io/rlx/tij/c2/Ex10.java运行程序:java io.rlx.tij.c2.Ex10
如果我在..中运行程序/projectRoot/src/main/java/io/rlx/tij/c2或我在没有包名的情况下运行它,我将收到以下错误:错误:无法找到或加载主类。
如果类在包中,则必须cd到项目的根目录,并使用类的完全限定名称(packageName.MainClassName)运行。
例子:
我的课程在这里:
D:\project\com\cse\
我的主类的完全限定名称是:
com.cse.Main
所以我回到根项目目录:
D:\project
然后发出java命令:
java com.cse.Main
这个答案是为了帮助新手Java程序员摆脱一个常见错误带来的挫折。我建议您阅读公认的答案,以获得有关Java类路径的更深入的知识。