首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SonarQube 4.0和Xerces

SonarQube 4.0和Xerces
EN

Stack Overflow用户
提问于 2014-01-10 16:36:01
回答 1查看 261关注 0票数 0

我正在为声纳开发一个自定义插件,它生成一个报告并将其导出到PDF。为此,我使用了一个具有xercesimpl 2.9.1依赖项的库。

这个插件与SonarQube 3.7.4一起工作,但当我使用"mvn声纳:声纳“分析一个项目时,我得到了一个带有SonarQube 4.0的SonarQube。

代码语言:javascript
复制
Caused by: java.lang.NoClassDefFoundError: org/apache/xerces/dom/DocumentImpl
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClassFromSelf(ClassRealm.java:389)
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:42)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:259)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:235)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:227)
at es.excentia.qalitax.report.service.OdtReport.getPdfOutputFile(OdtReport.java:103)
at es.excentia.sonar.odtreports.OdtReportPostJob.generateAndSaveReport(OdtReportPostJob.java:204)
at es.excentia.sonar.odtreports.OdtReportPostJob.executeOnIfLicenseOk(OdtReportPostJob.java:96)
at es.excentia.sonar.licenser.LicensedPostjob.executeOnIfEnabled(LicensedPostjob.java:29)
at es.excentia.sonar.plugins.common.DisableablePostjob.executeOn(DisableablePostjob.java:21)

sonar-plugin-api似乎也需要xercesimpl,但需要2.8.1版本,所以我尝试了一些方法

  1. 以排除所有xercesimpl依赖项,因为自从JDK1.4以来,xercesimpl还包含了->错误。已获得强制转换异常。
  2. 将xercesimpl依赖项排除在我的包中(v2.9.1),只留下声纳依赖项(2.8.1)。->也有同样的错误。类找不到。
  3. 在sonar-plugin中排除xercesimpl依赖,并保留包的依赖关系。->现在插件jar包含了xercesimpl.jar,但是我得到了同样的错误。我试着在声纳之前激活"useChildFirstClassLoader“来加载xercesimpl 2.9.1,但是没有运气。

我读过几篇关于这方面的文章,比如"Xerces Hell"。我还读到过可能是jvm problem,但我在jdk 6和7中尝试了同样的结果。

有什么想法吗?

更新

我将xercesimpl.jar和XMLapis.jar复制到sonarqube目录:sonarqube-4.0\WEB\WEB\lib。

有什么办法可以避免这种情况吗?

我试图修改我的pom依赖项,以便在插件jar中包含两个库,但是当我运行分析时,会得到相同的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-14 07:21:03

好的。这是我的错。

似乎xerces库不再包含在SonarQube 4.x中了。用声呐- plugin 4.0重新编译我的插件,maven找到xercesimpl并将它包含到我的插件中。然后,它可以正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21049625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档