在 Debian 上“给 Java 权限”通常分几种常见场景,下面按最常见情况给你说明,你可以对号入座。
一般 OpenJDK 安装后 java 已经在 PATH 里了:
which java
如果是自己下载的 JDK:
chmod +x /usr/local/java/bin/java
chmod +x yourapp.jar
java -jar yourapp.jar
或者直接用:
java -jar yourapp.jar
sudo apt install default-jdk
查看路径:
readlink -f $(which java)
编辑 ~/.bashrc:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
生效:
source ~/.bashrc
Java 默认不能绑定 1024 以下端口。
✅ 推荐方案(不用 root):
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/lib/jvm/java-17-openjdk-amd64/bin/java
验证:
java -jar yourapp.jar
[Unit]
Description=Java App
After=network.target
[Service]
User=appuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -jar /opt/app/app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start yourapp
sudo chown -R appuser:appuser /data
sudo chmod -R 755 /data
Java 中确保用户有读写权限即可。
Debian 默认 不用 SELinux(用 AppArmor),所以一般不用管。
| 问题 | 原因 |
|---|---|
| Permission denied | 没 chmod / 用户不对 |
| 端口绑定失败 | 非 root 不能绑 80 |
| java: command not found | JAVA_HOME 没配 |
如果你能说清楚:
我可以直接给你精确命令。