最近安裝了6.6版本的sonar,發現裏面的坑仍是不少,下面列舉下遇到的坑java
sonar插件地址:https://docs.sonarqube.org/display/PLUG/Plugin+Libraryweb
坑一 bootstrap
6.6版本sonar要求jdk比較高,必須1.8以上,多以修改sonar啓動項配置,修改文件/sonarqube-6.6/conf/wrapper.confapi
#wrapper.java.command=/path/to/my/jdk/bin/java #wrapper.java.command=java wrapper.java.command=/sonar/jdk1.8.0_121/bin/java //加入1.8jdk做爲啓動jdk
坑二安全
因爲6.6版本加入了elasticsearch,遇到不能以root用戶啓動,報錯信息以下:app
java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:106) ~[elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:195) ~[elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:342) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:132) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:123) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:67) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:134) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.cli.Command.main(Command.java:90) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:91) [elasticsearch-5.6.2.jar:5.6.2] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:84) [elasticsearch-5.6.2.jar:5.6.2]
解決方案:elasticsearch
由於安全問題elasticsearch 不讓用root用戶直接運行,因此要建立新用戶,用新用戶啓動maven
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
坑三spa
因爲sonar須要用新用戶啓動,因此sonar須要用到的全部資源必須屬於新用戶(包括jdk,坑3會講到),否則會有權限問題插件
chown -R elsearch /sonarqube-6.6 //把sonar資源分配給用戶elsearch chgrp -R elsearch /sonarqube-6.6 //把sonar資源分配給組elsearch chown -R elsearch /jdk1.8 //把jdk資源分配給用戶elsearch chgrp -R elsearch /jdk1.8 //把jdk資源分配給組elsearch
坑四
若是忘記以新用戶啓動,而是以root啓動,elasticsearch會在/sonarqube-6.6/temp裏會加載一些配置文件,若是這些文件初次加載則是屬於root用戶的,啓動也會失敗,報權限問題
因此記住必定要以新用戶啓動sonar
坑五
6.6不兼容低版本插件,例如sonar-web插件版本低於2.5則sonar啓動不了。(插件位置/sonarqube-6.6/extensions/plugins),必需要找到合適的插件版本
坑六
由於高版本sonar使用jdk1.8,若是在作sonar掃描的時候運行jdk不是1.8也會報jdk版本問題
Caused by: java.lang.UnsupportedClassVersionError: org/sonar/api/utils/SonarException : Unsupported major.minor version 52.0
因此不過用ant或者maven運行代碼掃描的時候 必需要用jdk1.8