很多人觉得 Hello World 没什么好讲的,但真正理解 javac 和 java 在做什么、public static void main(String[] args) 每个关键字的含义、classpath 的工作原理,才算真正入门。
这篇文章带你用两种方式(IDEA + 命令行)跑通 Hello World,然后逐行拆解代码,最后整理了新手最常遇到的 8 个报错及解决方案。
Java 程序的编译与运行
Java 不像 Python 可以直接运行源码,它采用编译 + 解释混合模型:
.java 源文件 → javac 编译 → .class 字节码 → java 启动 → JVM 执行
多一步编译的好处:.class 文件是平台无关的,Windows 上编译的程序拿到 Linux/macOS 也能跑。
JDK vs JRE vs JVM:
- JVM:执行字节码的虚拟机
- JRE = JVM + 核心类库(能运行程序)
- JDK = JRE + 开发工具 javac、jar 等(能开发 + 运行)
学 Java 必须装 JDK。
方式一:IntelliJ IDEA(推荐)
- 下载安装 JDK 8 或 21(LTS),以及 IDEA Community Edition(免费)
- IDEA → New Project → Name 填
HelloWorldApp→ Language 选 Java → 勾选 Add sample code → Create - 替换代码:
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
- 点绿色 ▶ 或
Shift + F10,底部输出Hello World!
效率技巧:输入 sout + Tab 快速生成 System.out.println(),输入 psvm + Tab 快速生成 main 方法。
方式二:命令行(Windows 11)
这种方式能让你看清编译运行的底层流程。
创建源文件:记事本写好代码,另存为 C:\myapplication\HelloWorldApp.java(保存类型选"所有文件")。
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
编译和运行:
cd C:\myapplication
javac HelloWorldApp.java # 编译:.java → .class
java -cp . HelloWorldApp # 运行:执行 .class
输出 Hello World!。
关键点:
-cp .告诉 JVM 在当前目录找.class文件java后面跟的是类名,不是文件名——不要写HelloWorldApp.class
如果 javac 命令找不到,需要把 JDK 的 bin 目录加到系统 PATH 环境变量。
代码逐行拆解
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
class HelloWorldApp:声明一个类。Java 中所有代码必须在类里面。
public static void main(String[] args) :JVM 的入口方法,签名固定:
| 关键字 | 含义 |
|---|---|
public | 公开访问,JVM 需要从外部调用 |
static | 静态方法,不需要创建对象 |
void | 不返回值 |
String[] args | 命令行参数数组 |
少任何一个关键字或改了参数类型,JVM 都会报 NoSuchMethodError。
System.out.println("Hello World!") :
System是java.lang包的类out是类型为PrintStream的静态字段println打印字符串并换行
三种注释:// 单行、/* */ 多行、/** */ 文档注释(javadoc 使用)。
新手 8 大常见报错
| 报错 | 原因 | 解决 |
|---|---|---|
'javac' 不是内部或外部命令 | JDK bin 没加到 PATH | 配置 PATH 环境变量 |
Class names only accepted if annotation processing... | 编译命令少了 .java 后缀 | javac HelloWorldApp.java |
NoClassDefFoundError | JVM 找不到 .class 文件 | 检查当前目录或用 -cp 指定路径 |
Could not find or load main class X.class | 运行命令多写了 .class | java HelloWorldApp 不是 java HelloWorldApp.class |
NoSuchMethodError: main | main 方法签名不对 | 检查 public static void main(String[] args) |
记事本偷加 .txt 后缀 | 保存类型选了"文本文档" | 保存类型选"所有文件" |
| 文件名和 public 类名不一致 | Java 编译器要求一致 | public class X 的文件必须叫 X.java |
| IDEA "Project SDK not defined" | IDEA 没找到 JDK | File → Project Structure → SDK → 选择 JDK |
classpath 是什么
classpath(类路径)告诉 JVM 去哪里找 .class 文件。和系统 PATH(告诉操作系统去哪找可执行程序)是两回事。
# -cp 指定类路径为当前目录
java -cp . HelloWorldApp
# -cp 指定类路径为 out 目录
java -cp out HelloWorldApp
# -d 指定编译输出目录
javac -d out HelloWorldApp.java
IDEA 在底层帮你管理了 classpath——它把编译产物放在 out/ 目录,运行时自动设置。
📌 我是 IT探险家。欢迎关注我的同名公众号,获取更多独家内容和完整源码。