在 Ubuntu 下 Java 编译失败的原因有很多,下面按常见原因 → 排查方法 → 解决办法给你一个清单,你可以对照看看是哪一类。
javac: command not found
或
The program 'javac' can be found in the following packages
java -version
javac -version
Ubuntu 默认只有 java(JRE),没有 javac(JDK)
sudo apt update
sudo apt install openjdk-17-jdk # 或 11 / 21
安装后确认:
javac -version
javac: command not found
但 java -version 正常
sudo apt install openjdk-17-jdk
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
永久生效:
nano ~/.bashrc
加到最后,然后:
source ~/.bashrc
error: class XXX is public, should be declared in a file named XXX.java
public class Hello {}
✅ 文件名必须是 Hello.java
改文件名,或去掉 public
java Hello.java # 这是运行,不是编译
javac Hello.java
java Hello
error: unmappable character for encoding ASCII
javac -encoding UTF-8 Hello.java
package com.demo;
但文件不在:
com/demo/Hello.java
javac com/demo/Hello.java
error: package xxx does not exist
javac -cp lib/xxx.jar Hello.java
javac -version
java -version
pwd
ls
javac 文件名.java
如果你愿意,可以把完整的报错信息 + 编译命令 + 文件结构贴出来,我可以直接帮你定位是哪一条。