我正在使用Sonar生成项目的代码审查报告。但我无法启动服务器。我正在
跑步时HeapDumpOnOutOfMemoryError
StartSonar.bat
文件。
请查找声纳启动时生成的日志。
C:\ TEMP2 \ Sonar \ sonarqube-4.5 \ bin \ windows-x86-32> StartSonar.bat包装器 | - >包装器作为控制台包装器启动|启动JVM ... jvm 1
|包装器(版本3.2.3)http://wrapper.tanukisoftware.org jvm 1 | 版权所有1999-2006 Tanuki Software,Inc。保留所有权利。 jvm 1 | jvm 1 | 2015.07.28 07:30:51 INFO app [o.s.p.m.JavaProcessLauncher]启动流程[搜索]: C:\ Software \ jdk1.6.0_18 \ jre \ bin \ java -Xmx256m -Xms256m - Xss256k -Djava.net.preferIPv4Stack = true -XX:+ UseParNewGC -XX:+ UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction = 75 -XX:+ UseCMSInitiatingOccupancyOnly -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 \应用程序数据\本地的\ Temp \ SQ-process8934190933893070058properties jvm 1 | 2015.07.28 07:30:57 INFO app [o.s.p.m.Monitor] 进程[搜索]是jvm 1 | 2015.07.28 07:30:57 INFO app [o.s.p.m.JavaProcessLauncher]启动流程[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 \应用程序数据\本地\特 mp \ sq-process4251708419326591677properties jvm 1 | 2015年7月28日 07:30:57 INFO app [o.s.p.m.TerminatorThread]流程[搜索]是 停止jvm 1 | 2015.07.28 07:30:58 INFO app [o.s.p.m.TerminatorThread]进程[search]停止包装| < - Wrapper StoppedC:\ TEMP2 \声纳\ sonarqube-4.5 \ BIN \ windows的X86-32>
我该如何解决这个问题?任何想法/解决方案都赞赏。
答案 0 :(得分:13)
我从声纳日志文件中获得了解决方案。您可以在目录" 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]
因此,我将端口号更改为" 4950"来自" 9000"在目录" sonarqube-4.5 \ conf"下的sonar.properties文件中。
# 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
更改端口号后服务器成功启动。
答案 1 :(得分:6)
这个问题背后的原因是SONAR已经在使用端口号,你没有正确地结束SONAR。 有两种方法可以解决这个问题,
日志看起来像
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"
答案 2 :(得分:5)
如果您已经启动了Sonar并在命令提示符下终止了该进程,那么您的JVM仍将在后台运行。
杀死java进程并再试一次,它有效。试过并为我工作。
答案 3 :(得分:0)
任务管理器 - >详细信息然后右键单击 - >结束任务 - >对于所有java.exe,如果不确定端口号。然后再次打开cmd提示符 - > startsonar.bat
答案 4 :(得分:0)
根据我的观察,如果Eclipse已经运行,那么首先关闭日食。 检查端口9000是免费的。
然后在服务器启动后从命令提示符运行声纳然后运行eclipse之后。
答案 5 :(得分:0)
您只需要更改 sonar.properties 文件中的端口
查看 sonar.web.port =“ CHANGE_PORT_NUMBER”