在 CentOS 上编译 Java 时提示“权限不够”,一般不是 Java 编译器本身没权限,而是目录 / 文件 / 环境没权限。下面按常见情况给你排查和解决办法。
比如你在 /opt、/usr 下编译:
javac Hello.java
# 报错:Permission denied
不要在有 root 权限的目录里乱编,换到自己的目录:
mkdir ~/java_test
cd ~/java_test
cp Hello.java .
javac Hello.java
检查:
which javac
ls -l $(which javac)
如果没执行权限:
sudo chmod +x /usr/bin/javac
(一般 JDK 安装好后不会这样)
如果你 JDK 装在:
/usr/local/jdk-17
而你不是 root,可能读不到:
ls -ld /usr/local/jdk-17
sudo yum install java-11-openjdk-devel
如果只是临时测试:
sudo javac Hello.java
⚠️ 不建议长期用 root 编 Java
比如你指定了输出目录:
javac -d /opt/out Hello.java
而 /opt/out 不是你的:
sudo mkdir /opt/out
sudo chown $USER:$USER /opt/out
如果上面都正常还报错:
getenforce
如果是 Enforcing,可临时关:
sudo setenforce 0
(生产环境不建议随便关)
# 1. 用包管理器装 JDK
sudo yum install java-11-openjdk-devel
# 2. 在自己目录编译
cd ~/project
javac Main.java
java Main
如果你愿意,可以把完整报错信息或你执行的命令贴出来,我可以直接帮你定位是哪一步权限问题。