Java Hello World 完全指南:从 IDEA 到命令行,搞懂编译运行原理

0 阅读3分钟

很多人觉得 Hello World 没什么好讲的,但真正理解 javacjava 在做什么、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(推荐)

  1. 下载安装 JDK 8 或 21(LTS),以及 IDEA Community Edition(免费)
  2. IDEA → New Project → Name 填 HelloWorldApp → Language 选 Java → 勾选 Add sample code → Create
  3. 替换代码:
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
  1. 点绿色 ▶ 或 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!")

  • Systemjava.lang 包的类
  • out 是类型为 PrintStream 的静态字段
  • println 打印字符串并换行

三种注释// 单行、/* */ 多行、/** */ 文档注释(javadoc 使用)。


新手 8 大常见报错

报错原因解决
'javac' 不是内部或外部命令JDK bin 没加到 PATH配置 PATH 环境变量
Class names only accepted if annotation processing...编译命令少了 .java 后缀javac HelloWorldApp.java
NoClassDefFoundErrorJVM 找不到 .class 文件检查当前目录或用 -cp 指定路径
Could not find or load main class X.class运行命令多写了 .classjava HelloWorldApp 不是 java HelloWorldApp.class
NoSuchMethodError: mainmain 方法签名不对检查 public static void main(String[] args)
记事本偷加 .txt 后缀保存类型选了"文本文档"保存类型选"所有文件"
文件名和 public 类名不一致Java 编译器要求一致public class X 的文件必须叫 X.java
IDEA "Project SDK not defined"IDEA 没找到 JDKFile → 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探险家。欢迎关注我的同名公众号,获取更多独家内容和完整源码。