Sonarを使用して、プロジェクトのコードレビューレポートを生成しています。しかし、サーバーを起動できません。私は得ています
HeapDumpOnOutOfMemoryError
走りながら
StartSonar.bat
ファイル。
ソナーの起動中に生成されたログを見つけてください。
C:\ TEMP2\Sonar\sonarqube-4.5\bin\windows-x86-32> StartSonar.bat wrapper | ->ラッパーがコンソールラッパーとして開始| JVMの起動... jvm 1
|ラッパー(バージョン3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software、Inc.無断複写・転載を禁じます。 jvm 1 | jvm 1 | 2015.07.28 07:30:51 INFOアプリ[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:+ UseCMSInitiatingOccupancyO nly -XX:+ HeapDumpOnOutOfMemoryError -Djava.awt.headless = true -Djava.io.tmpdir = C:\ TEMP2\arnar\sonnarson 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 [o.s.p.m.Monitor] 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\Te mp\sq-process4251708419326591677properties jvm 1 | 2015.07.28 07:30:57情報app [o.s.p.m.TerminatorThread] Process [search]はjvm 1を停止しています| 2015.07.28 07:30:58情報app [o.s.p.m.TerminatorThread] Process [search] is stopped wrapper | <-ラッパーが停止しましたC:\ TEMP2\Sonar\sonarqube-4.5\bin\windows-x86-32>
この問題を解決するにはどうすればよいですか?任意のアイデア/ソリューションが高く評価されています。
ソナーログファイル自体から解決策を得ました。サーバーの起動ログは、「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で使用されているため、SONARを適切に終了しなかったためです。これを取り除くには2つの方法があります。
ログは次のようになります
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"
すでにSonarを起動して、コマンドプロンプトでプロセスを強制終了した場合、JVMはまだバックグラウンドで実行されています。
Javaプロセスを終了して、もう一度試してください。動作します。私のために試してみました。
私の観察では、Eclipseがすでに実行されている場合、まずEclipseを閉じます。ポート9000が空いていることを確認してください。
サーバーが起動したらコマンドプロンプトからソナーを実行した後、Eclipseを実行した後。
タスクマネージャ->詳細、右クリック->タスクの終了->ポート番号がわからない場合は、すべてのJava.exeに対して。次に、cmdプロンプト-> startsonar.batを再度開きます