阅读量:2
Java应用在Ubuntu无法启动的排查与修复
一 快速定位
- 确认 Java 是否可用:运行命令查看版本,若提示未找到,先安装 JDK/JRE。示例:
java -version、javac -version。 - 检查 JAR 文件是否存在且路径正确:示例:
ls -l /path/to/app.jar;若报“Unable to access jarfile”,多半是路径错误或文件不存在。 - 查看应用日志与系统日志:应用日志通常在程序目录(如 /var/log/ 或应用配置路径),用
tail -f /path/to/app.log实时查看;系统级问题可查tail -n 100 /var/log/syslog。 - 校验权限:确保运行用户对 JAR 有读取权限,必要时
chmod +x /path/to/app.jar或调整属主chown youruser:yourgroup /path/to/app.jar。 - 涉及网络时,确认防火墙/云安全组已放行对应端口(如 8080/3306 等)。
二 常见错误与对应修复
- 错误:
java: command not found
处理:安装 Java(如sudo apt update && sudo apt install default-jdk),或正确设置 JAVA_HOME 与 PATH。 - 错误:
Error: Unable to access jarfile /path/to/app.jar
处理:核对 JAR 路径、文件名与大小写,确认文件存在且可读。 - 错误:
Error: Could not find or load main class xxx
处理:检查主类全名、打包是否包含该类;如使用模块或自定义类路径,确认 -cp/-classpath 设置正确。 - 错误:
UnsupportedClassVersionError
处理:编译与运行 JDK 版本不一致,升级或降级 JDK 使其匹配。 - 错误:
NoClassDefFoundError: javafx/application/Application
处理:安装 JavaFX 并在启动参数中加入--module-path(或按构建工具配置)。/lib --add-modules javafx.controls,javafx.fxml - 错误:
Permission denied
处理:赋予执行权限chmod +x app.jar,或以具备权限的用户运行。
三 环境与自启动问题
- 设置环境变量:在
~/.bashrc、~/.profile或/etc/profile中配置
示例:
使配置生效:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATHsource ~/.bashrc或source /etc/profile。 - 开机自启动脚本不生效:登录会话与开机环境不同,需在脚本开头显式加载环境,例如:
同时确保脚本与日志目录具备合适权限。#!/bin/bash source /etc/profile java -jar /opt/myapp/app.jar >/var/log/myapp.log 2>&1 &
四 资源与稳定性排查
- 资源不足:检查内存与磁盘(
free -m、df -h),必要时调小 -Xmx/-Xms,或为 OOM 生成 Heap Dump 分析(如-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/dump)。 - 系统日志:查看 /var/log/syslog 是否有 OOM-killer、磁盘满、权限拒绝等记录。
- 负载与依赖:用
top/htop观察 CPU/内存占用;确认第三方库版本兼容、最近变更未引入致命缺陷。
五 一键诊断脚本模板
将以下脚本保存为 check-java.sh,赋予可执行权限 chmod +x check-java.sh,按需替换 APP_JAR 与 JAVA_HOME 后执行,可快速定位常见问题。
#!/usr/bin/env bash
set -e
APP_JAR="/opt/myapp/app.jar"
JAVA_HOME="${JAVA_HOME:-/usr/lib/jvm/java-11-openjdk-amd64}"
JAVA="$JAVA_HOME/bin/java"
echo "=== 1) Java 版本 ==="
"$JAVA" -version 2>&1 || { echo "未找到 Java,请安装 JDK 或设置 JAVA_HOME"; exit 1; }
echo "=== 2) JAR 文件检查 ==="
ls -l "$APP_JAR" || { echo "JAR 不存在或路径错误: $APP_JAR"; exit 1; }
echo "=== 3) 权限检查 ==="
[ -r "$APP_JAR" ] || { echo "JAR 不可读,请检查权限"; exit 1; }
echo "=== 4) 环境变量 ==="
echo "JAVA_HOME=$JAVA_HOME"
echo "PATH=$PATH"
echo "=== 5) 尝试启动(前台 10 秒)==="
timeout 10s "$JAVA" -jar "$APP_JAR" || { echo "启动失败,请查看上方输出与应用日志"; exit 1; }
以上就是关于“Java应用在Ubuntu上无法启动怎么办”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm