在 CentOS 上做 Java 编译(javac / maven / gradle) 时常见的“权限问题”主要有几类,下面按最常见场景给你对应解决办法。
bash: /usr/bin/javac: Permission denied
ls -l $(which javac)
sudo chmod +x /usr/java/jdk*/bin/javac
/usr/java/
/opt/java/
而不是 /root
error: cannot write: Permission denied
# 查看当前目录权限
ls -ld .
# 修改目录权限
sudo chown -R 你的用户:你的用户 .
chmod -R u+w .
✅ 推荐做法:不要用 sudo javac
Permission denied: /root/.m2/repository
解决:
sudo chown -R 你的用户:你的用户 ~/.m2
或指定仓库:
mvn clean package -Dmaven.repo.local=/home/你的用户/.m2/repository
❌ 错误:
sudo mvn package
✅ 正确:
mvn package
getenforce
sudo setenforce 0
# 给目录正确上下文
sudo semanage fcontext -a -t user_home_t "/data/project(/.*)?"
sudo restorecon -Rv /data/project
Java 编译会用 /tmp
ls -ld /tmp
应为:
drwxrwxrwt
修复:
sudo chmod 1777 /tmp
✅ 正确姿势:
/usr/java 或 /optsudo 编译❌ 错误姿势:
/root如果你能贴出具体的报错信息(完整那一两行),我可以直接帮你精准定位是哪一类权限问题。