加油
努力

Linux环境下如何运行Java程序?

在 Linux 环境下运行 Java 程序,需确保已安装 JDK(Java Development Kit),并按以下步骤操作:


✅ 一、前提条件:检查并安装 JDK

  1. 检查是否已安装 Java

    java -version
    javac -version
    • 若显示版本号(如 openjdk version "17.0.1"),说明已安装;
    • 若提示 command not found,需安装 JDK。
  2. 安装 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
  3. (可选)配置默认 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.javajava com.example.Hello
依赖外部 JAR 包 使用 -cp-classpath 指定 javac -cp "lib/gson.jar" Main.java
java -cp ".:lib/gson.jar" Main(Linux/macOS 用 : 分隔;Windows 用 ;
打包为 JAR 并运行 jar 命令 + MANIFEST.MF jar cfe MyApp.jar Main *.classjava -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 项目?

欢迎随时告诉我! 😊

云服务器