在 Debian 上“无法编译 Java 文件”通常不是系统本身的问题,而是环境或命令使用方式的问题。下面按常见原因逐一说明,并给出排查和解决步骤。
Debian 默认只装 JRE,不装 JDK,而 javac 是 JDK 里的。
javac -version
如果提示:
command not found: javac
说明没装 JDK。
sudo apt update
sudo apt install default-jdk
或指定版本:
sudo apt install openjdk-17-jdk
安装后确认:
javac -version
java -version
虽然 javac 能直接用,但 Maven / Gradle / 某些脚本 需要 JAVA_HOME。
update-alternatives --list java
例如:
/usr/lib/jvm/java-17-openjdk-amd64/bin/java
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
永久生效可写入:
~/.bashrc
❌ 错误:
java Hello.java
✅ 正确:
javac Hello.java
java Hello
Java 要求:
public class HelloHello.java否则会报错:
class Hello is public, should be declared in a file named Hello.java
编译:
javac Hello.java
运行:
java Hello
不要写:
java Hello.class ❌
如果是最小化系统 / 容器:
sudo apt install build-essential
有时能解决依赖异常。
| 现象 | 原因 |
|---|---|
javac: command not found |
没装 JDK |
java: command not found |
没装 JRE/JDK |
Error: Could not find or load main class |
运行方式错或包名不对 |
Permission denied |
文件无执行权限(其实不需要) |
which javac
javac -version
java -version
ls Hello.java
javac Hello.java
java Hello
如果你愿意,可以把具体报错信息贴出来(终端原文),我可以精准定位是哪一类问题。