12

我正在使用 Sonar 生成我的项目的代码审查报告。但我无法启动服务器。我正进入(状态

HeapDumpOnOutOfMemoryError

在跑步的时候

StartSonar.bat

文件。

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

C:\TEMP2\Sonar\sonarqube-4.5\bin\windows-x86-32>St​​artSonar.bat 包装器 | --> 包装器作为控制台包装器启动 | 启动 JVM... jvm 1
| 包装器(版本 3.2.3)http://wrapper.tanukisoftware.org jvm 1 | 版权所有 1999-2006 Tanuki Software, Inc. 保留所有权利。虚拟机 1 | 虚拟机 1 | 2015.07.28 07:30:51 INFO app[ospmJavaProcessLauncher] 启动进程[搜索]: 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/组织。sonar.search.SearchServer C:\Users\gxs114\AppData\Local\Temp\sq-process8934190933893070058properties jvm 1 | 2015.07.28 07:30:57 INFO app[ospmMonitor] Process[search] is up jvm 1 | 2015.07.28 07:30:57 INFO app[ospmJavaProcessLauncher] 启动进程[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\Temp\sq-process4251708419326591677properties jvm 1 | 2015.07.28 07:30:57 信息应用程序 [ospmTerminatorThread] 进程 [搜索] 正在停止 jvm 1 | 2015.07.28 07:30:58 信息应用程序 [ospmTerminatorThread] 进程 [搜索] 已停止包装 | <-- 包装器停止

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

我该如何解决这个问题?任何想法/解决方案表示赞赏。

4

6 回答 6

19

我从声纳日志文件本身得到了解决方案。您可以在“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

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

于 2015-07-29T06:59:49.337 回答
8

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

杀死java进程再试一次,它可以工作。尝试并为我工作。

于 2016-04-06T00:37:20.490 回答
7

这个问题背后的原因是端口号已被 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 文件。它肯定会奏效。
于 2016-07-14T12:19:48.860 回答
2

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

于 2017-09-01T10:14:50.900 回答
1

根据我的观察,如果 Eclipse 已经运行,那么首先关闭 Eclipse。检查端口 9000 是否空闲。

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

于 2018-03-10T11:13:11.447 回答
1

您只需要更改sonar.properties文件中的端口

sonar.web.port ="CHANGE_PORT_NUMBER"

于 2020-03-28T20:22:15.783 回答