我正在努力让声纳为一个包含Findbugs规则的质量档案的项目工作。
然而,在分析项目时,声纳反任务会因以下错误而崩溃:
Caused by: java.io.IOException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
at edu.umd.cs.findbugs.filter.Filter.<init>(Filter.java:134)
at edu.umd.cs.findbugs.FindBugs.configureFilter(FindBugs.java:516)
at edu.umd.cs.findbugs.FindBugs2.addFilter(FindBugs2.java:374)
at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:136)
... 50 more
在这个项目中,依赖关系是用ivy解决的,并且不依赖于像xerces和xalan这样的库。另外我明白xerces包含在JVM中并且总是很乐意处理......
我试图添加各种依赖项以用于sonar.libraries属性但是没有效果添加本地JRE库也似乎没有太大作用。
如何运行此findbugs分析(以独立于机器的方式)?
(声纳版本:4.4,findbugs3插件)
更新: 我刚刚发现冲突的根源是在构建的早期有一个目标,删除它修复它。当然我非常想保留我的常春藤报告,所以问题仍然是我如何让这个工作......?
答案 0 :(得分:12)
将我们的声纳升级到v4.4并从Sonar方式改变Sonar的质量配置文件&#39; (Java)以及使用Findbugs&#39;的Sonar方式。抱怨SAX2开车时,我遇到了同样的例外:
Can not execute SonarQube analysis: Can not execute Find bugs: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
我通过将驱动程序添加到我的maven命令来解决它:
Dorg.xml.sax.driver = com.sun.org.apache.xerces.internal.parsers.SAXParser
Bellow是我真正的maven命令,用于清理,编译,运行测试,分析代码并将统计数据上传到声纳(在命令行中修复也符合非机器特定的首选项修复,并且不需要更改源代码)< / p>
$ mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.fai
lure.ignore=true -Dorg.xml.sax.driver=com.sun.org.apache.xerces.internal.parsers.
SAXParser sonar:sonar
答案 1 :(得分:2)
我们的解决方案
无法执行Findbugs:SAX2驱动程序类 org.apache.xerces.parsers.SAXParser
不使用
mvn clean install sonar:sonar
在一个命令中,但是在一个单独的步骤中调用声纳
mvn clean install
mvn sonar:sonar
答案 2 :(得分:0)
这可能会解决问题: 从以下网址下载xerces-2.9.0.jar:
http://www.java2s.com/Code/Jar/x/Downloadxercesjar.htm
将此jar添加到(声纳根文件夹)\ extensions \ plugins
在所需的文件夹中尝试此命令
祝你好运mvn clean install声纳:声纳