在 Debian 系统上编译 Java 程序(通常指用 javac 编译 .java 文件,或构建 Java 项目),有一些常见但容易忽略的注意点。下面按场景给你总结:
Debian 默认只有 JRE,没有 JDK。
java -version
javac -version
如果没有 javac,说明没装 JDK。
sudo apt update
sudo apt install default-jdk
或指定版本(推荐):
sudo apt install openjdk-17-jdk
很多构建工具(Maven / Gradle)依赖 JAVA_HOME。
readlink -f $(which java)
通常类似:
/usr/lib/jvm/java-17-openjdk-amd64
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
javac -source 11 -target 11 Main.java
⚠ 注意:
javac --release 17 Main.java
Debian 默认可能是 UTF-8,但不一定。
locale
如果不是 UTF-8:
sudo apt install locales
sudo dpkg-reconfigure locales
编译时指定编码:
javac -encoding UTF-8 Main.java
确保有写权限:
mkdir -p bin
javac -d bin src/*.java
chmod +x run.sh
./run.sh
sudo apt install maven
mvn compile
sudo apt install gradle
gradle build
⚠ Debian 仓库中的 Gradle 可能偏旧,重要项目建议用官方包。
编译大项目可能 OOM:
export JAVA_OPTS="-Xmx1g"
Maven:
export MAVEN_OPTS="-Xmx2g"
| 问题 | 原因 | 解决 |
|---|---|---|
javac: command not found |
没装 JDK | 安装 openjdk-*-jdk |
| 中文乱码 | 编码不一致 | -encoding UTF-8 |
| 运行时版本错误 | 编译/运行版本不一致 | --release |
| 无法写 class 文件 | 无目录权限 | 用 -d 指定目录 |
如果你是指 在 Debian 上编译 OpenJDK 源码,或者 交叉编译 Java 程序,可以告诉我,我可以给你更具体的步骤。