无法启动声纳服务器
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。
有两种方法可以摆脱这种情况,
- 使用日志文件(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"
- 注销系统重新登录,然后启动StartSonar.bat文件。肯定有用。
任务管理器-> 详细信息然后右键单击-> 结束任务-> 全部 java.exe 如果不确定端口号。然后再打开cmd提示符 ->startsonar.bat
根据我的观察,如果 Eclipse 已经 运行ning 然后首先关闭 eclipse。
检查端口 9000 是否可用。
然后在 运行 服务器启动后从命令提示符发出声纳,然后在 运行 eclipse 之后。
你只需要在sonar.properties文件中更改端口
看sonar.web.port="CHANGE_PORT_NUMBER"
我正在使用 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 StoppedC:\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。 有两种方法可以摆脱这种情况,
- 使用日志文件(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"
- 注销系统重新登录,然后启动StartSonar.bat文件。肯定有用。
任务管理器-> 详细信息然后右键单击-> 结束任务-> 全部 java.exe 如果不确定端口号。然后再打开cmd提示符 ->startsonar.bat
根据我的观察,如果 Eclipse 已经 运行ning 然后首先关闭 eclipse。 检查端口 9000 是否可用。
然后在 运行 服务器启动后从命令提示符发出声纳,然后在 运行 eclipse 之后。
你只需要在sonar.properties文件中更改端口
看sonar.web.port="CHANGE_PORT_NUMBER"