在 Debian 上编译 Java 报错,常见原因主要集中在环境、命令、版本、权限、编码这几个方面。下面按“最常见 → 较少见”给你一个排查清单。
Debian 默认可能只有 java(运行),没有 javac(编译)。
检查:
javac -version
如果提示:
command not found
说明没装 JDK。
解决:
sudo apt update
sudo apt install default-jdk
# 或指定版本
sudo apt install openjdk-17-jdk
即使装了 JDK,有些构建工具(Maven / Gradle)仍会报错。
查看:
echo $JAVA_HOME
正常应指向 JDK 目录,例如:
/usr/lib/jvm/java-17-openjdk-amd64
配置(示例):
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
写入:
~/.bashrc
Debian 可能同时有多个 Java。
查看:
update-alternatives --list java
update-alternatives --list javac
切换:
sudo update-alternatives --config javac
Java 要求:
public class Hello {}
文件名必须是:
Hello.java
否则报错:
class X is public, should be declared in a file named X.java
例如:
package com.demo;
文件应位于:
com/demo/Main.java
错误编译方式:
javac Main.java # 错
正确:
javac com/demo/Main.java
Debian 默认 UTF-8,但有时仍报错:
编码 GBK 的不可映射字符
解决:
javac -encoding UTF-8 Main.java
编译后 .class 文件写不进去。
检查:
ls -ld .
解决:
chmod -R u+w .
例如:
查看 Java 版本:
java -version
常见原因:
pom.xml / build.gradle 配置错误建议贴出:
mvn -v
gradle -v
如果你愿意,可以把具体报错信息完整贴出来(哪怕几行),我可以:
你可以直接贴:
报错内容 + javac -version + java -version