Ubuntu 上如何编译、运行并测试 Java 程序

陆景行
陆景行
发布时间:2026-08-22| 132人浏览过
原创

前言

很多人第一次在 Ubuntu 上跑 Java,卡住的并不是语法,而是环境、编译命令和测试流程到底该怎么串起来。本文按“安装 JDK、验证命令、编译运行示例、接入 Maven 与 JUnit 测试”四步展开,你不仅能跑通一个最小 HelloWorld,还能判断当前机器是否已经具备继续做 Java 项目的基础条件。

很多人第一次在 Ubuntu 上跑 Java,卡住的并不是语法,而是环境、编译命令和测试流程到底该怎么串起来。本文按“安装 JDK、验证命令、编译运行示例、接入 Maven 与 JUnit 测试”四步展开,你不仅能跑通一个最小 HelloWorld,还能判断当前机器是否已经具备继续做 Java 项目的基础条件。

先安装 OpenJDK 11

如果系统里还没有 Java 开发环境,第一步就是安装 JDK。原文给出的版本是 OpenJDK 11,在 Ubuntu 里可以直接通过 apt 安装:

sudo apt update
sudo apt install openjdk-11-jdk

这一步完成后,系统会同时具备运行 Java 程序和编译 Java 源码所需的核心工具。

确认 Java 和 javac 都可用

安装完成后,不要急着写代码,先检查运行环境是否已经生效。这里要分别确认 Java 运行命令和编译命令都能正常调用:

Java 环境安装与命令验证流程图
Java 环境安装与验证用一张图梳理 Ubuntu 上从安装 OpenJDK 11 到确认。
java -version
javac -version

如果两个命令都能返回版本信息,说明当前终端已经识别到 Java 环境。对初学者来说,这一步很关键,因为很多“编译失败”问题其实都出在环境没装好,或者只装了运行时却没有编译器。

创建、编译并运行 HelloWorld

先创建源代码文件

接下来新建一个最小可运行的 Java 文件,比如 HelloWorld.java。可以直接用终端编辑器创建:

HelloWorld 从源码到运行输出的编译执行关系图
HelloWorld 编译运行链路把 `HelloWorld.java`、`javac`、`HelloWorld.class`。
vim HelloWorld.java

文件内容如下:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

保存退出后,就可以进入编译阶段。

使用 javac 编译源码

在源文件所在目录执行:

javac HelloWorld.java

如果编译成功,当前目录下会生成一个 HelloWorld.class 文件。这个文件就是 Java 源码编译后的字节码,也是后续运行程序时真正会被 JVM 加载的内容。

再用 java 运行程序

编译完成后,运行命令如下:

java HelloWorld

终端输出应为:

Hello, World!

看到这行输出,说明你的 Ubuntu 环境已经完成了最基本的 Java 编译与执行验证。

需要进一步测试时:接入 Maven 和 JUnit

如果只是验证环境,跑通 HelloWorld 已经足够;但如果你还想确认项目依赖管理和单元测试链路也没有问题,就可以继续加入 Maven 与 JUnit。

Maven 与 JUnit 基础测试链路图
Maven + JUnit 测试验证概括 Maven 安装、JUnit 4.13.2 依赖、测试类执行以及 `BUILD。

先安装 Maven

Maven 负责依赖管理和测试执行,安装命令如下:

sudo apt install maven

在 pom.xml 中加入 JUnit 依赖

然后在项目根目录创建 pom.xml,加入原文中的 JUnit 依赖配置:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

这里保留的是 JUnit 4.13.2 配置,适合做最基础的测试链路验证。

编写测试类并执行 mvn test

接着创建测试类 HelloWorldTest.java:

import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class HelloWorldTest {
    @Test
    public void testHelloWorld() {
        assertEquals("Hello, World!", new HelloWorld().getMessage());
    }
}

然后执行:

mvn test

测试通过后,会看到类似下面的输出:

[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running HelloWorldTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.056 s - in HelloWorldTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.345 s
[INFO] Finished at: 2022-01-01T00:00:00+00:00
[INFO] ------------------------------------------------------------------------

从输出看,测试共执行了 1 项,失败数、错误数和跳过数都为 0,并且最终显示 BUILD SUCCESS。这说明 Maven、JUnit 依赖下载以及测试执行流程都已经打通。

不过这里也要注意一个实际问题:前面的 HelloWorld.java 示例只有 main 方法,并没有 getMessage() 方法;而测试类里调用了 new HelloWorld().getMessage()。也就是说,如果你完全照着原始示例写,测试代码还需要补齐对应方法,或者调整断言目标,否则测试类本身会先因为方法不存在而无法通过编译。

跑通之后,你实际验证了什么

完成以上步骤后,你已经验证了几件关键事情:Ubuntu 可以正确安装并识别 OpenJDK 11,java 与 javac 命令可正常使用,源码能够编译成 .class 文件,程序能在 JVM 中运行;如果 Maven 测试也通过,还说明依赖管理与基础单元测试链路也能工作。

对于刚开始接触 Java 或刚换到 Ubuntu 开发环境的用户来说,这套流程就是最直接的自检方法。后续即便进入更复杂的项目,排查问题时也可以先回到这条最小路径,确认问题究竟出在环境、构建配置,还是业务代码本身。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。