在 Ubuntu 上编译 Java,通常需要注意下面这些点,按“常见坑 + 建议”来说明:
很多人只装了 JRE,结果 javac 不存在。
java -version
javac -version
如果 javac 报错:
sudo apt update
sudo apt install default-jdk
# 或指定版本
sudo apt install openjdk-17-jdk
编译/构建工具(Maven、Gradle)常依赖 JAVA_HOME。
查看 Java 安装路径:
which javac
readlink -f $(which javac)
一般在:
/usr/lib/jvm/java-17-openjdk-amd64
设置:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
可写入:
~/.bashrc
Ubuntu 默认 UTF-8,但 Windows 写的 .java 可能是 GBK。
编译时指定:
javac -encoding UTF-8 *.java
例如:
package com.demo;
文件必须在:
com/demo/Main.java
错误示例:
Main.java 里写 package com.demo; 但文件在根目录
会报:
package com.demo does not exist
如果引用了第三方 jar:
javac -cp lib/xxx.jar Main.java
运行:
java -cp .:lib/xxx.jar Main
注意:Linux 用 : 分隔,Windows 用 ;
高版本编译,低版本运行会报错:
UnsupportedClassVersionError
指定版本:
javac -source 11 -target 11 Main.java
(推荐直接用对应 JDK 版本)
如果 .java 文件没读权限:
chmod +r *.java
项目稍大就用:
sudo apt install maven
mvn compile
sudo apt install gradle
gradle build
mkdir -p com/demo
cat > com/demo/Main.java <<EOF
package com.demo;
public class Main {
public static void main(String[] args) {
System.out.println("Hello Ubuntu");
}
}
EOF
javac com/demo/Main.java
java com.demo.Main
如果你愿意,可以告诉我:
javac 还是 Maven/Gradle我可以直接帮你定位问题。