Java程序可在IDE正常运行,终端执行时提示找不到主类问题
报错核心原因
Java 的 java 命令运行主类时有两个强制规则,你的所有操作都违反了对应规则,导致JVM无法找到对应类的字节码,最终触发ClassNotFoundException:
- 不需要也不能带
.class后缀,命令参数填写的是类的全限定名,而非字节码文件名 - 必须在类路径根目录下执行:类路径根目录是存放包层级结构的最上层目录,JVM 会按照全限定名对应的包路径,从这个目录开始查找字节码文件
错误操作逐一对应问题
- 在
company文件夹下执行java Main.class
双重错误:一是给类名加了.class后缀,JVM 会把Main.class当成完整类名去查找,自然找不到对应类;二是当前目录src/com/company不是类路径根目录,JVM 不知道上级的com包结构从哪找。 - 在
src文件夹下执行java com.company.Main.class
依然错误添加了.class后缀,JVM 会把com.company.Main.class整体当成类名检索,不存在这个类。 - 在
src文件夹下执行java.com.company.Main
属于命令格式输入错误:java和类名之间需要用空格分隔,这种写法会被识别为执行一个名为java.com.company.Main的不存在命令。
正确执行方式
- 终端切换到
src目录(也就是com包文件夹的直接上级目录,即类路径根目录)- 执行无后缀的全限定类名命令:
java com.company.Main
如果后续修改代码重新编译,也在 src 目录下执行对应命令即可:javac com/company/Main.java
内容的提问来源于stack exchange,提问作者user10276750
相关产品推荐
相关产品推荐

