在 Ubuntu 上,“Java 权限问题”通常不是 Java 语言本身的权限,而是运行环境、文件/目录权限、或安全策略导致的。下面按常见场景给你一套排查与解决办法。
bash: ./xxx.jar: Permission denied
或
java: command not found
chmod +x xxx.jar
或
chmod 755 xxx.jar
java -jar xxx.jar
which java
java -version
没装就装:
sudo apt update
sudo apt install openjdk-17-jdk
java.io.FileNotFoundException (Permission denied)
ls -l /path/file
sudo chmod 644 file
sudo chown youruser:youruser file
sudo chmod 755 /path/dir
⚠️ 不要随便 777
chmod 777 # 不推荐,有安全风险
root 运行 Javawhoami
echo $HOME
建议:不要用 root 跑业务 Java 程序
java.net.BindException: Permission denied
Linux 下 1024 以下端口需要 root
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/java
AccessControlException
java -Djava.security.manager -Djava.security.policy=my.policy App
或干脆去掉 SecurityManager(现代应用)
Java 程序在终端能跑,systemd 下不行
编辑 service:
[Service]
User=appuser
Group=appuser
WorkingDirectory=/opt/app
然后:
sudo chown -R appuser:appuser /opt/app
sudo aa-status
sudo systemctl stop apparmor
whoami
java -version
ls -l 文件
ps -ef | grep java
如果你能告诉我:
我可以直接给你精准命令。