在 Debian 上排查 Java 报错,一般可以按下面思路一步步来,从环境 → 日志 → 代码 → 系统资源逐步定位。
java -version
javac -version
如果提示 command not found:
sudo apt update
sudo apt install default-jdk
update-alternatives --list java
切换版本:
sudo update-alternatives --config java
java -jar yourapp.jar
重点看:
Exception in thread "main"Caused byNoClassDefFoundErrorUnsupportedClassVersionError(JDK 版本不对)| 报错 | 原因 |
|---|---|
| UnsupportedClassVersionError | 编译 JDK 高于运行 JDK |
| NoClassDefFoundError | 缺少依赖 jar |
| Permission denied | 没执行权限 / 端口权限 |
| Address already in use | 端口被占用 |
systemctl status yourapp.service
journalctl -u yourapp.service -n 100 --no-pager
JAVA_HOME 没设示例 service:
[Service]
User=appuser
Environment=JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ExecStart=/usr/bin/java -jar /opt/app/app.jar
Java 应用通常会有:
logs/nohup.outcatalina.out(Tomcat)tail -f logs/app.log
ss -lntp | grep 8080
dmesg | grep -i kill
free -h
ulimit -n
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5005,suspend=n -jar app.jar
jps
jstack <pid>
把下面内容贴出来:
java -versioncat /etc/os-release)我可以直接帮你判断是 环境、代码还是配置问题。