上一篇
命令行如何编译Java程序?
- 后端开发
- 2025-06-28
- 9
使用javac命令编译Java源文件,javac HelloWorld.java,生成.class字节码文件,确保已安装JDK并配置环境变量,编译后通过java命令运行程序。
环境准备(安装JDK)
-
下载JDK
访问Oracle官网或OpenJDK下载对应操作系统的JDK(推荐JDK 11+)。
-
配置环境变量
- Windows
- 右键“此电脑” → 属性 → 高级系统设置 → 环境变量
- 在系统变量中新建:
- 变量名:JAVA_HOME → 变量值:JDK安装路径(如 C:Program FilesJavajdk-21)
- 编辑Path变量 → 新增两项:
- %JAVA_HOME%bin
- %JAVA_HOME%jrebin
- Linux/macOS
在终端执行(路径替换为实际JDK路径): echo 'export JAVA_HOME=/usr/lib/jvm/jdk-21' >> ~/.bashrc echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc source ~/.bashrc
- Windows
-
验证安装
命令行输入:
java -version # 显示Java版本 javac -version # 显示编译器版本
若显示版本号(如 java 21.0.1),则配置成功。
编译与运行Java程序
步骤1:编写Java源代码
- 新建文本文件,命名为 HelloWorld.java(文件名必须与主类名一致)。
- 用记事本或代码编辑器写入: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Command Line!"); }
}
保存到指定目录(如 D:java_project)。
步骤2:编译源代码
- 打开命令行(Windows:Win+R → 输入 cmd;Linux/macOS:打开终端)。
- 切换到源代码目录: cd D:java_project # Windows cd ~/java_project # Linux/macOS
- 执行编译命令: javac HelloWorld.java
- 成功时:生成 HelloWorld.class 字节码文件(无输出提示)。
- 失败时:命令行显示错误信息(如语法错误)。
步骤3:运行程序
java HelloWorld # 注意:不要加 .class 后缀
输出结果:Hello, Command Line!
常见问题解决
-
javac 或 java 命令未找到
- 原因:环境变量配置错误。
- 解决:重新检查 JAVA_HOME 和 Path 配置。
-
错误:类名HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明
- 原因:文件名与类名不一致(如类名 HelloWorld 但文件名为 hello.java)。
- 解决:确保文件名和类名完全一致(包括大小写)。
-
运行时提示找不到主类
- 原因1:运行目录下无 .class 文件 → 重新执行 javac。
- 原因2:包声明未处理 → 若代码有包(如 package com.example;),需: javac -d . HelloWorld.java # 生成包路径目录 java com.example.HelloWorld # 带包名运行
高级用法
-
编译多个文件

-
指定输出目录
javac -d ./out HelloWorld.java # 将.class文件输出到out目录 java -cp ./out HelloWorld # 从out目录运行
-
依赖库编译
若需引用外部JAR(如 lib.jar):
javac -cp .;lib.jar Main.java # Windows分号 javac -cp .:lib.jar Main.java # Linux/macOS冒号 java -cp .;lib.jar Main # 运行同理 - 深入理解流程:掌握从源码到字节码的转换过程。
- 灵活控制:适用于自动化脚本、服务器环境等无IDE场景。
- 排查问题:直接暴露错误,避免IDE的“黑盒”操作。
- Oracle官方文档:Java Development Kit User’s Guide
- OpenJDK编译指南:Building OpenJDK
- 环境变量配置参考:Windows, Linux/macOS
为什么推荐命令行编译?
提示:熟练后可用构建工具(如Maven/Gradle),但命令行是根基,多练习可提升调试能力!
引用说明:
