跳到内容

元数据卡

  • 前置知识:知道语法规则(ch01-syntax-rules.md
  • 预计时间:15 分钟
  • 完成标志:遇到五种常见错误能自己定位并修复

编程的真相:大多数时候你都在排除错误。不是你不会写,是写的时候总会漏点什么。

老陈师傅把几块废弃的铁锭摆在桌上——每一块上面都刻着一个错误信息。"这些都是变量村的新手踩过的坑。先看一遍,心里有个数。"


💥 陷阱一:找不到 main 方法

症状:

bash
java HelloWorld
Error: Main method not found in class HelloWorld

常见原因(按频率排序):

  1. 拼写错误:把 main 写成了 mian
  2. 大小写错误:把 main 写成了 Main(Java 区分大小写!)
  3. 漏了 static:写了 public void main 而不是 public static void main
  4. 参数类型写错:写了 String args[]String[] args 但漏了方括号

排查: 打开源文件,逐词检查方法签名。

bash
cat -n HelloWorld.java

💥 陷阱二:拼写错误

症状:

bash
javac HelloWorld.java
HelloWorld.java:3: error: cannot find symbol
  symbol:   variable system
  location: class HelloWorld
 System.out.println("Hello World!");
 ^

原因:System 写成了 system(小写 s)。

变种:

你想写的你写成了报错信息
Systemsystemcannot find symbol: variable system
System.out.printlnSystem.out,println';' expected
Stringstringcannot find symbol: class string
printlnprintlcannot find symbol: method printl

诊断技巧: 代码编辑器中 Java 关键词会变色——SystemString 没变色,大概率拼错了。


💥 陷阱三:漏分号

症状:

bash
javac HelloWorld.java
HelloWorld.java:3: error: ';' expected
 System.out.println("Hello World!")
                                    ^

原因: 语句末尾忘了加英文分号 ;

定位: 箭头 ^ 指向编译器期望分号的地方。行号也给了。如果报错行看起来没错,往前看一行——编译器可能把错误推迟到下一行才"发现"。


💥 陷阱四:类名不匹配文件名

症状:

bash
javac hello.java
hello.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 foundJDK 没装,或 PATH 没配装 JDK,或配置环境变量
';' expected漏分号,或用了中文分号 添加英文分号
文件名不匹配文件名和类名不一致改文件名或改类名
Main method not found拼成 mianMain,或漏 static检查方法签名
cannot find symbol拼写错误(Systemsystem 等)检查大小写和拼写
输出还是旧的改代码后忘了编译运行 javac

通用排查流程

1. 看到报错 → 读第一行(错误类型)+ 箭头位置
2. 检查箭头指向的那行,以及它前面一行
3. 对照排障表找原因
4. 修复后重新编译

验收标准

  • [ ] 你能区分编译时错误和运行时错误
  • [ ] 你能手动制造三种错误并读懂报错信息
  • [ ] 你知道改完代码后为什么需要重新编译
  • [ ] 你知道 java HelloWorldjava HelloWorld.class 哪个是对的

下一步

理论说够了,该动手了。

下一步:ch01-lab-hello-world.md —— 动手练习:修 Bug、改输出、写自己的第一个程序。

Built with VitePress | Software Systems Atlas