Mac系统下SonarQube 7.1无法启动问题求助
SonarQube 7.1 无法在 macOS 通过
sonar.sh console 启动的排查方案 问题重现
你已经下载了SonarQube 7.1,执行启动命令:
./bin/macosx-universal-64/sonar.sh console
但启动失败,目前能看到的截断日志如下:
Running SonarQube...
--> Wrapper Started as Console Launching a JVM... Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. 2018.04.26 14:57:34 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /Users/deep...
由于日志被截断看不到核心错误,我整理了几个针对性的排查步骤:
排查步骤
获取完整启动日志
SonarQube的核心错误日志都存在安装目录的logs文件夹下,重点查看这三个文件:sonar.log:主应用运行日志web.log:Web服务启动日志wrapper.log:JVM包装器的详细启动日志
可以用命令快速查看最新200行内容:
tail -200 /path/to/sonarqube/logs/wrapper.log(替换
/path/to/sonarqube为你的实际安装路径)检查Java版本兼容性
SonarQube 7.1仅支持JDK 8(Oracle JDK或OpenJDK均可),完全不兼容JDK 9及以上版本。执行以下命令确认当前Java版本:java -version如果输出显示版本为9+,需要切换到JDK 8:
- 可以用
export JAVA_HOME=/path/to/jdk8临时指定JDK路径,或者修改系统默认Java版本。
- 可以用
修复文件权限问题
macOS下解压SonarQube压缩包后,可能出现temp、logs等目录权限不足的情况,导致启动失败。执行以下命令赋予当前用户完整权限:sudo chown -R $(whoami) /path/to/sonarqube检查端口占用情况
SonarQube默认使用9000端口,如果该端口被其他进程占用,会直接导致启动失败。执行以下命令查看端口占用:lsof -i :9000如果有结果返回,说明端口被占用,可以:
- 杀掉占用端口的进程:
kill -9 <PID>(替换<PID>为输出中的进程ID) - 修改SonarQube端口:编辑
conf/sonar.properties文件,找到sonar.web.port字段,改成其他未被占用的端口(如9001),保存后重新启动。
- 杀掉占用端口的进程:
调整JVM内存配置
部分情况下,默认的JVM内存分配不足会导致启动失败。可以编辑conf/wrapper.conf文件,调整以下参数:wrapper.java.initmemory=256 wrapper.java.maxmemory=512根据你的机器配置适当调高数值(比如改成512和1024),然后重新启动尝试。
内容的提问来源于stack exchange,提问作者Deepak Agrawal
相关产品推荐
相关产品推荐

