在 Linux 环境下运行 Java 程序,需确保已安装 JDK(Java Development Kit),并按以下步骤操作:
✅ 一、前提条件:检查并安装 JDK
-
检查是否已安装 Java
java -version javac -version- 若显示版本号(如
openjdk version "17.0.1"),说明已安装; - 若提示
command not found,需安装 JDK。
- 若显示版本号(如
-
安装 OpenJDK(以主流发行版为例)
- Ubuntu/Debian:
sudo apt update sudo apt install openjdk-17-jdk # 推荐 JDK 17(LTS)或 JDK 21(最新 LTS) - CentOS/RHEL/Rocky/AlmaLinux(8+):
sudo dnf install java-17-openjdk-devel - Arch Linux:
sudo pacman -S jdk-openjdk
- Ubuntu/Debian:
-
(可选)配置默认 Java 版本(多版本共存时)
sudo update-alternatives --config java sudo update-alternatives --config javac
✅ 二、运行 Java 程序的两种常见方式
🟢 方式 1:运行已编译的 .class 文件(传统方式)
假设你有一个 Hello.java:
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Linux!");
}
}
✅ 步骤:
# 1. 编译(生成 Hello.class)
javac Hello.java
# 2. 运行(注意:类名不带 .class 后缀,且大小写必须严格匹配)
java Hello
⚠️ 注意:
- 类名必须与文件名一致(
public class Hello→ 文件名必须是Hello.java);java命令后跟的是类名(不是文件名),且区分大小写;- 当前目录需在
Hello.class所在目录(或通过-cp指定类路径)。
🟢 方式 2:直接运行 .java 文件(Java 11+ 支持 —— “单文件运行”)
✅ 无需手动编译,一步执行(适合脚本式、简单程序):
java Hello.java
✅ 要求:
- JDK ≥ 11;
- 文件中
public class名必须与文件名一致;- 该功能仅支持单个源文件(不支持依赖外部
.class或复杂包结构)。
✅ 三、进阶场景(推荐生产/项目使用)
| 场景 | 方法 | 示例 |
|---|---|---|
| 含包(package)的程序 | 编译/运行时注意目录结构和 -cp |
javac -d . com/example/Hello.java → java com.example.Hello |
| 依赖外部 JAR 包 | 使用 -cp 或 -classpath 指定 |
javac -cp "lib/gson.jar" Main.javajava -cp ".:lib/gson.jar" Main(Linux/macOS 用 : 分隔;Windows 用 ;) |
| 打包为 JAR 并运行 | jar 命令 + MANIFEST.MF |
jar cfe MyApp.jar Main *.class → java -jar MyApp.jar |
| 使用构建工具(推荐) | Maven / Gradle(自动管理依赖与编译) | mvn compile && mvn exec:java -Dexec.mainClass="com.example.Main" |
✅ 四、常见问题排查
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
Error: Could not find or load main class XXX |
类名错误、不在 classpath、包路径不匹配、.class 不在当前目录 |
检查类名拼写、运行目录、是否用了 package(需按包结构组织目录)、加 -cp . 显式指定 |
UnsupportedClassVersionError |
编译 JDK 版本 > 运行 JDK 版本 | 统一 JDK 版本,或编译时指定目标版本:javac -source 17 -target 17 Hello.java |
javac: command not found |
只安装了 JRE,未装 JDK | 安装 openjdk-*-jdk(而非 jre)包 |
| 中文乱码 | 终端编码或 JVM 字符集不匹配 | 运行时加参数:java -Dfile.encoding=UTF-8 Hello |
✅ 小贴士
- 推荐使用 JDK 17 或 21(均为长期支持 LTS 版本);
- 开发建议配合 IDE(IntelliJ IDEA / VS Code + Extension)或构建工具(Maven/Gradle);
- 查看 Java 环境变量:
echo $JAVA_HOME(若已设置);可通过sudo update-alternatives --config java设置JAVA_HOME。
需要我帮你:
- ✨ 写一个完整示例(含包结构 + 编译运行命令)?
- 📦 打包成可执行 JAR 的详细步骤?
- 🐳 在 Docker 中运行 Java 程序?
- 🧩 配置 Maven/Gradle 项目?
欢迎随时告诉我! 😊
云小栈