在 Debian 上编译 Java(通常指使用 JDK 进行 Java 源码编译),需要注意以下几个方面,涵盖环境、工具链、依赖、路径和常见问题。
java -version
javac -version
java:运行环境(JRE)javac:编译器(JDK),编译 Java 必须有Debian 官方仓库中常见 JDK:
sudo apt update
sudo apt install default-jdk
常用选项:
default-jdk # 当前 Debian 默认 JDK
openjdk-11-jdk
openjdk-17-jdk
openjdk-21-jdk
✅ 推荐:
- Debian 11/12:OpenJDK 17
- 老项目:OpenJDK 8 或 11
很多构建工具(Maven / Gradle / 脚本)依赖 JAVA_HOME
sudo update-alternatives --config java
通常路径类似:
/usr/lib/jvm/java-17-openjdk-amd64
编辑:
nano ~/.bashrc
添加:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
javac HelloWorld.java
java HelloWorld
多个文件:
javac *.java
指定输出目录:
javac -d out src/*.java
sudo apt install maven
mvn compile
sudo apt install gradle
gradle build
Debian 默认 UTF-8,但 Java 有时不是。
✅ 编译时显式指定编码:
javac -encoding UTF-8 *.java
Maven 中:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
| 项目 | OpenJDK(Debian 默认) | Oracle JDK |
|---|---|---|
| 来源 | 开源 | 商业 |
| 稳定性 | 好 | 好 |
| 许可 | 宽松 | 有商业限制 |
| 推荐 | ✅ | ❌(除非特殊需求) |
✅ Debian 上优先使用 OpenJDK
javac: command not found原因:只装了 JRE,没装 JDK
解决:
sudo apt install default-jdk
Unsupported class file major version
原因:编译和运行 JDK 版本不一致
解决:
javac -source 11 -target 11
不要放在 /root 或系统目录编译
推荐:
/home/youruser/projects/
✅ 使用 sdkman 管理多版本 JDK(强烈推荐)
curl -s "https://get.sdkman.io" | bash
sdk install java 17.0.9-tem
✅ CI / 服务器环境:
JAVA_HOMEjavac✅ Debian 编译 Java 要注意:
JAVA_HOME如果你愿意,可以告诉我:
我可以给你更精确的配置方案。