Ubuntu 上 Java 编译失败 的原因非常多,下面按常见原因 + 排查方法给你一个系统清单,你可以对照看看是哪种情况。
症状
javac: command not found
或
Command 'javac' not found
解决
sudo apt update
sudo apt install default-jdk
# 或指定版本
sudo apt install openjdk-17-jdk
检查:
java -version
javac -version
两个都要有。
症状
解决
sudo update-alternatives --config java
设置 JAVA_HOME:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
写入 ~/.bashrc 永久生效。
sudo update-alternatives --config java
sudo update-alternatives --config javac
确保 java 和 javac 版本一致。
Java 要求:
public class Hello {}
文件必须叫 Hello.java
否则:
class Hello is public, should be declared in a file named Hello.java
✅ 正确:
javac Hello.java
❌ 错误:
java Hello.java # Java 11+ 才行
如果有:
package com.demo;
必须在:
com/demo/xxx.java
编译:
javac com/demo/Main.java
Permission denied
解决:
chmod -R 755 your_project
尽量避免:
/桌面/我的项目/Test.java
mvn -version
如果报错:
JAVA_HOME not set
设置:
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
请按顺序检查:
javac -version 能用吗?java 和 javac 版本一致吗?如果你愿意,把完整报错信息贴出来,例如:
javac Test.java
Test.java:3: error: ...
我可以直接帮你定位到具体哪一行、什么原因。