java从入门到放弃
2025/6/18大约 1 分钟
Java 编译后无法执行 .class 文件的问题
❓ 问题描述
使用 javac 编译 Java 文件后,出现 .class 文件,但执行时报错:
javac Main.java
java Main.class # ❌ 错误的写法✅ 正确的执行方式
javac Main.java # 编译,生成 Main.class
java Main # 正确:只写类名,不加 .class 后缀📌 原因解析
javac 编译器会将 Main.java 编译成字节码文件 Main.class。
java 命令运行的是 类名(即 .class 文件中的类),而不是文件名。
所以不要加 .class 后缀,只需要写类名。
⚠️ 注意事项
✅ 类名和文件名必须完全一致(大小写敏感);
✅ java 命令只能用类名,不能加 .class 后缀;
✅ 保证 main() 方法是 public static void main(String[] args);
✅ 如果定义了 package,运行方式会稍有不同(见下方);
📦 使用 package 时的正确运行方式
package myapp;
public class Main {
public static void main(String[] args) {
System.out.println("Hello from package!");
}
}编译:
cd src
javac myapp/Main.java生成:
myapp/Main.class运行(在 src 目录下):
java myapp.Main✅ 总结
| 操作 | 命令 | 说明 |
|---|---|---|
| 编译 | javac Main.java | 生成 Main.class |
| 运行(无包) | java Main | 类名,不加 .class |
| 运行(有包) | java 包名.类名(如 java myapp.Main) | 包结构对应类路径 |