在 Ubuntu 上遇到 Java 权限不足,通常不是 Java 本身的问题,而是文件/目录权限、执行权限或用户身份导致的。下面按常见场景给你“破法”。
.jar 报 Permission deniedjava -jar app.jar
bash: ./app.jar: Permission denied
chmod +x app.jar
which java
java -version
如果 java 不在 PATH:
sudo apt install default-jre
java.io.FilePermission denied
java.nio.file.AccessDeniedException
ls -l /path/to/file
chmod 644 file.txt
chmod 755 dir/
sudo chown -R $USER:$USER /your/project
java.net.BindException: Permission denied
1024 以下端口只有 root 能用
✅ 用 sudo(不推荐长期)
sudo java -jar app.jar
✅ 改用高位端口(推荐)
server.port=8080
✅ 端口转发(生产推荐)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
✅ 赋予 java 绑定权限(高级)
sudo setcap CAP_NET_BIND_SERVICE=+eip $(readlink -f $(which java))
Permission denied (something)
编辑服务文件:
sudo nano /etc/systemd/system/myapp.service
确保:
User=youruser
WorkingDirectory=/opt/myapp
然后:
sudo chown -R youruser:youruser /opt/myapp
sudo systemctl restart myapp
Ubuntu 默认是 AppArmor
查看:
sudo aa-status
临时测试:
sudo systemctl stop apparmor
java -version 正常如果你能贴出具体报错信息(命令行或日志),我可以直接帮你精准定位是哪一类权限问题。