0

我研究 SonarQube 已经有一段时间了,现在我在我目前工作的地方需要它。不过,首先,我尝试在本地安装它,并让它在将它提交到服务器环境之前分析我们的一个项目。但事实证明,安装 SonarQube 比最初假设的要麻烦得多。

我去了 SonarQube 网站查看有关如何设置它的文档。我目前的设置是:

  • 视窗 7 64 位
  • JDK 7 更新 79
  • 微软 SQL 服务器 2012

所以我进入 SonarQube 属性开始设置它。我得到了以下设置:

  • sonar.jdbc.url=jdbc:sqlserver://obscured;databaseName=sonar;integratedSecurity=true
  • 声纳.jdbc.maxActive=60
  • 声纳.jdbc.maxIdle=5
  • sonar.jdbc.minIdle=2
  • 声纳.jdbc.maxWait=5000
  • sonar.jdbc.minEvictableIdleTimeMillis=600000
  • sonar.jdbc.timeBetweenEvictionRunsMillis=30000
  • 声纳.web.host=192.0.0.1
  • sonar.web.context=/声纳
  • 声纳.web.port=9000

当我尝试运行 StartSonar.bat(以管理员身份)时,它在 sonar.log 文件中给出了这个:

--> Wrapper Started as Console
Launching a JVM...
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

2016.04.13 10:32:08 INFO  app[o.s.p.m.JavaProcessLauncher] Launch process[search]: C:\Program Files\Java\jre7\bin\java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djava.net.preferIPv4Stack=true # -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 # -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=C:\Users\smf\Documents\sonarqube-5.3\temp -cp ./lib/common/*;./lib/search/* org.sonar.search.SearchServer C:\Users\smf\AppData\Local\Temp\sq-process4147018529192614354properties
Error: Could not find or load main class #
<-- Wrapper Stopped

我不确定为什么它找不到主类。我没有做任何改变文件结构的事情。它只是在 Documents 中提取为它自己的文件夹 (C:\Users\smf\Documents\sonarqube-5.3)。

附带说明一下,我一直无法使用 Windows 服务选项。我可以安装该服务,但是每当我尝试启动它时,我都会被告知该服务已启动但无法启动。

4

1 回答 1

1

这都是关于#

无法找到或加载主类#

那是因为在#启动 Java 进程时有一个不属于那里:

-Xms256m -Xss256k -Djava.net.preferIPv4Stack=true # -XX:+UseParNewGC

我敢打赌,这#来自您sonar.properties文件中的以下内容:

sonar.search.javaOpts=-Xmx1G -Xms256m -Xss256k -Djava.net.preferIPv4Stack=true \
#  -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 \
#  -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError

也就是说,您只会取消注释第一行,但该行末尾的尾随\意味着下一行不被视为注释,而是作为 JVM 选项传递,#包括在内。

两种解决方案:

  • 删除\第一行的尾随
  • 首选解决方案:取消注释剩下的两行
于 2016-04-13T12:26:56.753 回答