我正在開發聲納定製插件,它生成報告並將其導出到PDF。爲此,我使用我們的一個庫,其中xercesimpl 2.9.1依賴關係。SonarQube 4.0和Xerces
該插件可用於SonarQube 3.7.4,但我發現一個ClassNotFoundException的與SonarQube 4.0當我分析了項目 「MVN聲納:聲納」
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)
看來聲納插件的API也需要xercesimpl,但是2.8.1版本,所以我嘗試過的一些事情
- 要排除所有xercesimpl依賴,becau因爲jdk 1.4 xercesimpl也包含在內 - >錯了。演員獲得異常。
- 要排除我的軟件包(v2.9.1)中的xercesimpl依賴關係,只留下聲納依賴項(2.8.1)。 - >有同樣的錯誤。未找到類。
- 要排除sonar-plugin-api中的xercesimpl依賴項並保留我的包的依賴項。 - >現在插件jar包含了xercesimpl.jar,但是我得到了同樣的錯誤。我嘗試激活「useChildFirstClassLoader」在聲納之前加載xercesimpl 2.9.1,但沒有運氣。
我已閱讀了幾篇關於此的帖子,如"Xerces Hell"。我也讀過,也許這是一個jvm problem,但我用jdk 6和7嘗試過,結果相同。
有什麼想法?
UPDATE
我沒有它的工作拷貝xercesimpl.jar和xml-apis.jar聲納Web服務器目錄: sonarqube-4.0 \網絡\ WEB-INF \ lib中
有什麼避免這種情況的方法?
我試圖修改我的pom依賴關係,將兩個庫都包含在我的插件jar中,但是當我運行分析時,我得到相同的錯誤。