无法启动声纳服务器

Not able to start Sonar Server

我正在使用 Sonar 为我的项目生成代码审查报告。但是我无法启动服务器。我得到

HeapDumpOnOutOfMemoryError

同时 运行

StartSonar.bat

文件。

请查找声纳启动时生成的日志。

C:\TEMP2\Sonar\sonarqube-4.5\bin\windows-x86-32>StartSonar.bat wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1
| Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2015.07.28 07:30:51 INFO app[o.s.p.m.JavaProcessLauncher] Launch process[search]: C:\Software\jdk1.6.0_18\jre\bin\java -Xmx256m -Xms256m - Xss256k -Djava.net.preferIPv4Stack=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyO nly -XX:+HeapDumpOnOutOfMemoryError -Djava.awt.headless=true -Djava.io.tmpdir=C:\TEMP2\Sonar\sonarqube-4.5\temp -cp ./lib/common/;./lib/search/ org. sonar.search.SearchServer C:\Users\gxs114\AppData\Local\Temp\sq-process8934190933893070058properties jvm 1 | 2015.07.28 07:30:57 INFO app[o.s.p.m.Monitor] Process[search] is up jvm 1 | 2015.07.28 07:30:57 INFO app[o.s.p.m.JavaProcessLauncher] Launch process[web]: C:\Software\jdk1.6.0_18\jre\bin\java -Xmx768m -XX:MaxPermSi ze=160m -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djruby.management.enabled=fals e -Djava.io.tmpdir=C:\TEMP2\Sonar\sonarqube-4.5\temp -cp ./lib/common/;./lib/server/ org.sonar.server.app.WebServer C:\Users\gxs114\AppData\Local\Te mp\sq-process4251708419326591677properties jvm 1 | 2015.07.28 07:30:57 INFO app[o.s.p.m.TerminatorThread] Process[search] is stopping jvm 1 | 2015.07.28 07:30:58 INFO app[o.s.p.m.TerminatorThread] Process[search] is stopped wrapper | <-- Wrapper Stopped

C:\TEMP2\Sonar\sonarqube-4.5\bin\windows-x86-32>

我该如何解决这个问题?任何 idea/solution 表示赞赏。

我从声纳日志文件本身得到了解决方案。您可以在目录 "sonarqube-4.5\logs" 下的 sonar.log 文件中找到服务器启动日志。

由于以下端口绑定异常,我无法启动服务器:

2015.07.29 02:46:36 ERROR web[o.a.c.h.Http11Protocol]  Failed to initialize end point associated with ProtocolHandler ["http-bio-0.0.0.0-9000"]
java.net.BindException: Address already in use: JVM_Bind /0.0.0.0:9000
    at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:411) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
    at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
    at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434) ~[tomcat-embed-core-7.0.54.jar:7.0.54]
    at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119) [tomcat-embed-core-7.0.54.jar:7.0.54]

因此,我在 "sonarqube-4.5\conf".

目录下的 sonar.properties 文件中将端口号从“9000”更改为“4950”
# TCP port for incoming HTTP connections. Disabled when value is -1.
sonar.web.port=4950

# TCP port for incoming HTTPS connections. Disabled when value is -1 (default).
#sonar.web.https.port=-1

修改端口号后服务器启动成功

如果您已经启动了 Sonar 并在命令提示符下终止了进程,您的 JVM 仍会 运行 在后台。

杀掉java进程再试,成功了。尝试并为我工作。

这个问题背后的原因是端口号已经被SONAR使用,你没有正确结束SONAR。 有两种方法可以摆脱这种情况,

  1. 使用日志文件(sonarqube-4.5\logs)识别端口号。然后确定该进程的 PID。然后使用 PID 终止进程。

日志看起来像

java.net.BindException: Address already in use: **JVM_Bind /0.0.0.0:9000**

查找PID

netstat -a -n -o | find "port_num"

终止进程

taskkill /F /PID "pid"
  1. 注销系统重新登录,然后启动StartSonar.bat文件。肯定有用。

任务管理器-> 详细信息然后右键单击-> 结束任务-> 全部 java.exe 如果不确定端口号。然后再打开cmd提示符 ->startsonar.bat

根据我的观察,如果 Eclipse 已经 运行ning 然后首先关闭 eclipse。 检查端口 9000 是否可用。

然后在 运行 服务器启动后从命令提示符发出声纳,然后在 运行 eclipse 之后。

你只需要在sonar.properties文件中更改端口

sonar.web.port="CHANGE_PORT_NUMBER"