# 22.5 Java 开发环境

Java 作为跨平台编程语言的典范，其理念是“一次编写，到处运行”。

## JDK

参见：FreeBSD Project. java\[EB/OL]. \[2026-03-26]. <https://www.freebsd.org/java/>. 这是 FreeBSD 官方 Java 开发环境配置指南。

### OpenJDK

搜索名称或描述中包含“jdk”的软件包：

```sh
# pkg search -o jdk
java/bootstrap-openjdk11       Java Development Kit 11
java/bootstrap-openjdk17       Java Development Kit 17
java/bootstrap-openjdk8        Java Development Kit 8
java/openjdk11                 Java Development Kit 11
java/openjdk11-jre             Java Runtime Environment 11
java/openjdk17                 Java Development Kit 17
java/openjdk17-jre             Java Runtime Environment 17
java/openjdk18                 Java Development Kit 18
java/openjdk19                 Java Development Kit 19
java/openjdk20                 Java Development Kit 20
java/openjdk21                 Java Development Kit 21
java/openjdk22                 Java Development Kit 22
java/openjdk23                 Java Development Kit 23
java/openjdk8                  Java Development Kit 8
java/openjdk8-jre              Java Runtime Environment 8
comms/rxtx                     Native interface to serial ports in Java
```

本文将以 `java/openjdk23` 为例。

### 安装 OpenJDK 23

使用 pkg 安装 OpenJDK 23：

```sh
# pkg install openjdk23
```

或者使用 ports 安装：

```sh
# cd /usr/ports/java/openjdk23
# make install clean
```

显示已安装 Java 的版本信息：

```sh
# java -version
openjdk version "23.0.2" 2025-01-21
OpenJDK Runtime Environment (build 23.0.2+7-1)
OpenJDK 64-Bit Server VM (build 23.0.2+7-1, mixed mode, sharing)
```

安装完成后尚未配置 `$JAVA_HOME` 环境变量，可使用以下命令查看其当前值：

```sh
# echo $JAVA_HOME

```

查看 OpenJDK 23 安装路径：

```sh
# ls /usr/local/openjdk23/
/usr/local/openjdk23/bin/     /usr/local/openjdk23/include/ /usr/local/openjdk23/lib/
/usr/local/openjdk23/conf/    /usr/local/openjdk23/jmods/   /usr/local/openjdk23/man/
/usr/local/openjdk23/demo/    /usr/local/openjdk23/legal/   /usr/local/openjdk23/release
```

相关文件结构：

```sh
/usr/local/
└── openjdk23/
    ├── bin/ # Java 可执行文件
    ├── include/ # C/C++ 头文件
    ├── lib/ # Java 库文件
    ├── conf/ # 配置文件
    ├── jmods/ # JMOD 模块文件
    ├── man/ # 手册页
    ├── demo/ # 示例程序
    ├── legal/ # 法律文件
    └── release # 发布信息文件
```

### 配置环境变量

请根据 Shell 选择合适的路径。

```sh
~/
├── .bashrc # Bash 配置文件
├── .profile # 通用配置文件
├── .shrc # FreeBSD 默认 sh 配置文件
└── .zshrc # Zsh 配置文件
```

将以下内容写入：

```ini
export JAVA_HOME="/usr/local/openjdk23"          # 设置 JAVA_HOME 环境变量指向 OpenJDK 23 安装路径
export PATH=$JAVA_HOME/bin:$PATH                # 将 JAVA_HOME/bin 添加到 PATH，确保 java 命令可用
```

刷新 shell 环境变量：

```sh
# . ~/.shrc # 重新加载 ~/.shrc 配置文件（注意前面的点表示 source）
# echo $JAVA_HOME	# 显示当前 JAVA_HOME 环境变量值
/usr/local/openjdk23
# echo $PATH	# 显示当前 PATH 环境变量值，包含 JAVA_HOME/bin
/usr/local/openjdk23/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin
```

## Eclipse

### 安装 Eclipse

使用 pkg 安装：

```sh
# pkg install eclipse
```

或者使用 ports 安装：

```sh
# cd /usr/ports/java/eclipse
# make install clean
```

### 设置中文

点击菜单 `Help`，然后选择 `Install New Software`。

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-e13e2c0a7adadb99d0184863421ff8d75b47a24f%2Feclipse1.png?alt=media)

取消勾选 `Contact all update sites during install to find required software`，然后点击 `Add`：

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-8b2f02aad7a23f0e5f83dc76efb8d111b92fa83f%2Feclipse2.png?alt=media)

清除 `Location` 原有内容，加入 `<https://mirrors.tuna.tsinghua.edu.cn/eclipse/technology/babel/update-site/latest/>`。再点击 `Add`：

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-402ce76a69fab819fb7263449348ee9ceac9e233%2Feclipse3.png?alt=media)

加载中：

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-399276bd60490bda2cb917c1ffa57e09d9d5e2c8%2Feclipse4.png?alt=media)

勾选 `Babel Language Packs in Chinese (Simplified)`。点击 `Next`。

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-fae3ac5bc6de60f8276def62ec2d78fad8439fa9%2Feclipse5.png?alt=media)

点击 `Next`。

![Eclipse 菜单](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-97efce55c64c47e1d3a455cc48455d9225cb6b5e%2Feclipse6.png?alt=media)

同意协议：

![Eclipse 许可协议](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-b06777de0caba7123a7593c89685cc17481b8ec4%2Feclipse7.png?alt=media)

建议先点击界面底部的任意位置，然后再进行全选，否则可能导致界面卡顿。

![Eclipse 设置中文环境](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-19603026e02d4f576b833d9c196bb2a55555f6bf%2Feclipse8.png?alt=media)

重启即可：

![Eclipse 主页](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-bc562a5ab51dbc783ca41d4ede98dc83de28014e%2Feclipse9.png?alt=media)

![Eclipse 中文主页](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-ea87be45ee3e83920336fb0ec0c1e026d39dfb27%2Feclipse10.png?alt=media)

#### 参考文献

* Eclipse 2024.03 安装教程（附中文语言设置教程）\[EB/OL]. <https://www.ittel.cn/archives/35394.html>. 提供 Eclipse IDE 安装与中文本地化的详细步骤。

### HelloWorld

点击“创建 Java 项目”，项目名 test。

![创建 Java 项目](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-092f52e13aae4040edb4f16a6167a320f7cafd23%2Feclipse11.png?alt=media)

右键创建一个 `包`，再创建一个 `java 类`，名称 `test`。

![创建 java 类](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-cea2e82d73fe728df8c875531b973c3a601c1647%2Feclipse12.png?alt=media)

在类文件中写入以下代码：

```java
package test;

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

点击绿色三角，即可看到输出。

![Eclipse HelloWorld 输出](https://338876981-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCJR3FQGH1PkdRtOljuxb%2Fuploads%2Fgit-blob-40e47ef8eb15af04a7668e5f008b598cad1a8971%2Feclipse13.png?alt=media)

#### 参考文献

* Eclipse 使用配置全面讲解\[EB/OL]. <https://www.cnblogs.com/xxhxs-21/articles/16417603.html>. 介绍 Eclipse IDE 的常用配置与开发技巧。

## IntelliJ IDEA

### 安装 IntelliJ IDEA Ultimate

使用 pkg 安装：

```sh
# pkg install intellij-ultimate
```

或者使用 ports 安装：

```sh
# cd /usr/ports/java/intellij-ultimate
# make install clean
```

## 使用

在 FreeBSD 上使用时可能会出现报错“编辑器中的文件不可运行”，而 Windows 版本则正常。该问题已报告为 [Bug 285130 - Port java/intellij-ultimate always shows This file in the editor is not runnable](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285130)，记录 IntelliJ IDEA 在 FreeBSD 上的运行问题。

IntelliJ IDEA 社区版可以正常使用，但长期未更新，最新版本仍为 2020.2。

### 故障排除与未竟事宜

#### 提示“the file in the editor is not runnable”

该问题仍待解决。

## 课后习题

1. 配置最新版本的 OpenJDK 开发环境，使用 Eclipse 创建一个简单的 Java Swing 程序并运行，验证中文显示。
2. 分析 IntelliJ IDEA 在 FreeBSD 上文件不可运行的 bug，尝试通过 Ports 构建不同版本复现并定位问题。
3. 比较 OpenJDK 与 OracleJDK 在 FreeBSD 上的性能差异。
