元数据卡
- 前置知识:知道语法规则(ch01-syntax-rules.md)
- 预计时间:15 分钟
- 完成标志:遇到五种常见错误能自己定位并修复
编程的真相:大多数时候你都在排除错误。不是你不会写,是写的时候总会漏点什么。
老陈师傅把几块废弃的铁锭摆在桌上——每一块上面都刻着一个错误信息。"这些都是变量村的新手踩过的坑。先看一遍,心里有个数。"
💥 陷阱一:找不到 main 方法
症状:
bash
java HelloWorldError: Main method not found in class HelloWorld常见原因(按频率排序):
- 拼写错误:把
main写成了mian - 大小写错误:把
main写成了Main(Java 区分大小写!) - 漏了
static:写了public void main而不是public static void main - 参数类型写错:写了
String args[]或String[] args但漏了方括号
排查: 打开源文件,逐词检查方法签名。
bash
cat -n HelloWorld.java💥 陷阱二:拼写错误
症状:
bash
javac HelloWorld.javaHelloWorld.java:3: error: cannot find symbol
symbol: variable system
location: class HelloWorld
System.out.println("Hello World!");
^原因: 把 System 写成了 system(小写 s)。
变种:
| 你想写的 | 你写成了 | 报错信息 |
|---|---|---|
System | system | cannot find symbol: variable system |
System.out.println | System.out,println | ';' expected |
String | string | cannot find symbol: class string |
println | printl | cannot find symbol: method printl |
诊断技巧: 代码编辑器中 Java 关键词会变色——System 和 String 没变色,大概率拼错了。
💥 陷阱三:漏分号
症状:
bash
javac HelloWorld.javaHelloWorld.java:3: error: ';' expected
System.out.println("Hello World!")
^原因: 语句末尾忘了加英文分号 ;。
定位: 箭头 ^ 指向编译器期望分号的地方。行号也给了。如果报错行看起来没错,往前看一行——编译器可能把错误推迟到下一行才"发现"。
💥 陷阱四:类名不匹配文件名
症状:
bash
javac hello.javahello.java:1: error: class HelloWorld is public,
should be declared in a file named HelloWorld.java
public class HelloWorld {
^原因: 文件名 hello.java(小写 h)和类名 HelloWorld(大写 H)不匹配。
修复:
bash
mv hello.java HelloWorld.java
javac HelloWorld.java这条规则让文件名成为类的"身份证"——看到文件名就知道里面是什么类。
💥 陷阱五:编译忘了 / 运行错了
场景一:改了代码没重新编译
你改了输出文字,但没运行 javac,直接 java HelloWorld——看到的还是旧输出。java 执行的是最后一次编译生成的 .class 文件。改代码后必须重新编译。
场景二:编译报错后忘了
javac 编译失败时不会生成新的 .class 文件,老版本还在。如果 java 还在跑旧版本——看看编译器是不是刚刚报错了。
快速排障表
| 问题 | 最常见原因 | 解决方法 |
|---|---|---|
javac: command not found | JDK 没装,或 PATH 没配 | 装 JDK,或配置环境变量 |
';' expected | 漏分号,或用了中文分号 ; | 添加英文分号 |
| 文件名不匹配 | 文件名和类名不一致 | 改文件名或改类名 |
Main method not found | 拼成 mian、Main,或漏 static | 检查方法签名 |
cannot find symbol | 拼写错误(System → system 等) | 检查大小写和拼写 |
| 输出还是旧的 | 改代码后忘了编译 | 运行 javac |
通用排查流程
1. 看到报错 → 读第一行(错误类型)+ 箭头位置
2. 检查箭头指向的那行,以及它前面一行
3. 对照排障表找原因
4. 修复后重新编译验收标准
- [ ] 你能区分编译时错误和运行时错误
- [ ] 你能手动制造三种错误并读懂报错信息
- [ ] 你知道改完代码后为什么需要重新编译
- [ ] 你知道
java HelloWorld和java HelloWorld.class哪个是对的
→ 下一步
理论说够了,该动手了。
下一步:ch01-lab-hello-world.md —— 动手练习:修 Bug、改输出、写自己的第一个程序。