Ubuntu“无法编译 Java”通常不是系统本身的问题,而是环境或命令使用不对。下面按最常见原因给你梳理一下,你可以对照看看是哪一种。
Ubuntu 默认不会装 JDK,如果你只装了 Java 运行环境(JRE),那只能运行 .class,不能编译 .java。
javac -version
如果看到:
Command 'javac' not found
说明没有 JDK。
sudo apt update
sudo apt install default-jdk
安装后再试:
javac -version
javac 不在 PATH有时候装了 JDK,但终端找不到 javac。
sudo find / -name javac 2>/dev/null
如果找到了(比如 /usr/lib/jvm/java-17-openjdk-amd64/bin/javac),需要配置环境变量:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
(可写入 ~/.bashrc 永久生效)
java 而不是 javac很多人会这样写:
java Hello.java
这是错误的。
正确流程是:
javac Hello.java # 编译
java Hello # 运行(不要加 .java)
比如文件叫 Test.java,但里面是:
public class Hello {}
编译会直接报错。
✅ 规则:
public class 的名字 必须和文件名一致public class如果是很老的 Ubuntu(如 14.04 已停止支持),可能:
apt 源失效解决方式:
.java 文件带 \r\n 编码问题(较少见)直接把完整报错贴出来,比如:
Hello.java:3: error: ...
或者
Command 'javac' not found
我可以精确告诉你哪一步错了,比泛泛说原因更有效。
Ubuntu 不能编译 Java,90% 是因为 没装 JDK / 用了 java 而不是 javac / 文件名和类名不一致。
你可以先跑一句:
javac -version
把结果发我,我马上帮你定位。