Debian 上“编译 Java 失败”原因很多,通常可以分成环境层面和代码/构建层面两类。下面按常见情况给你一个排查清单。
Debian 默认可能只有 java(运行环境),没有 javac(编译器)。
检查:
javac -version
如果提示:
command not found
说明没装 JDK。
解决(以 Debian 11/12 为例):
sudo apt update
sudo apt install default-jdk
或指定版本:
sudo apt install openjdk-17-jdk
很多构建工具(Maven / Gradle)依赖 JAVA_HOME。
检查:
echo $JAVA_HOME
若为空:
sudo apt install openjdk-17-jdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
可写入:
~/.bashrc
update-alternatives --config java
update-alternatives --config javac
确保 java 和 javac 指向同一版本。
java 编译 .java错误示例:
java Hello.java
正确:
javac Hello.java
java Hello
常见错误:
pom.xml 中 Java 版本不兼容示例(Maven 指定 Java 版本):
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
在 ARM / 树莓派 / 容器 中:
libc 或 gcc 相关库尝试:
sudo apt install build-essential
Permission denied
解决:
chmod +x gradlew
或不要用 root 编译敏感项目。
| 错误信息 | 原因 |
|---|---|
javac: command not found |
没装 JDK |
Unsupported class file major version |
Java 版本不兼容 |
package does not exist |
依赖没下载 |
Could not find or load main class |
编译或运行路径错 |
Permission denied |
权限不足 |
如果你愿意,可以贴出:
cat /etc/os-release)java -version、javac -version)我可以直接帮你 pinpoint 是哪一步出问题。