2014-06-25 49 views
0

部署自定義規則之後(如https://github.com/SonarSource/sonar-java/blob/master/java-checks/src/main/java/org/sonar/java/checks/UselessImportCheck.java),當我開始SonarQube 4.2,以下異常聲納啓動時拋出:定製聲納規則 - ClassNotFoundException的:com.sonar.sslr.api.AstAndTokenVisitor

Caused by: java.lang.ClassNotFoundException: com.sonar.sslr.api.AstAndTokenVisitor 
    at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50) ~[plexus-classworlds-2.2.3.jar:na] 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244) ~[plexus-classworlds-2.2.3.jar:na] 
    at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230) ~[plexus-classworlds-2.2.3.jar:na] 
    ... 44 common frames omitted 

上面提到的類應該在sslr核-1.19.2.jar,這是我的位置找到sonarqube-4.2 /網絡/配置/插件/ squidjava/META-INF/lib目錄/ sslr核-1.19.2.jar

找到

我丟失了一些步驟,以enhnance默認聲納庫? 當前安裝的插件是(sonarqube-4.2 /擴展/插件):

  • sonarqube-4.2 /擴展/插件/聲納的CheckStyle-插件-2.1.jar
  • sonarqube-4.2 /擴展/插件/sonar-web-plugin-2.1.jar
  • sonarqube-4.2 /擴展/插件/聲納jacoco-插件-2.2.1.jar
  • sonarqube-4.2 /擴展/插件/聲納-java的插件 - 2.2 .1.jar
  • sonarqube-4.2 /擴展/插件/聲納萬無一失-插件-2.2.1.jar
  • sonarqube-4.2 /擴展/插件/聲納-PMD-插件-2.2.jar
  • sonarqube-4.2 /擴展/插件/聲納的FindBugs-插件-2.2.1.jar
  • sonarqube-4.2 /擴展/plugins/sonar-squid-java-plugin-2.2.1.jar

我應該怎麼做才能防止上面提到的異常(除去undeploy提到的自定義插件)?

應直接捆綁到自定義插件必要的庫?我期望聲納將這些圖書館捆綁在一起。

回答

1

最後我找到了這個問題的解決方案/解釋:

sonarqube-4.2 /網絡/配置/插件/目錄是從sonarqube-4.2 /擴展/插件聲納啓動時動態更新目錄。每個插件都應該有的lib目錄在他的META-INF jar.Such lib目錄應包含所有必要的庫。

在我的情況:

META-INF/lib/asm-5.0.1.jar 
META-INF/lib/java-checks-2.2.1.jar 
META-INF/lib/java-squid-2.2.1.jar 
META-INF/lib/jaxen-1.1.4.jar 
META-INF/lib/sslr-core-1.19.2.jar 
META-INF/lib/sslr-squid-bridge-2.3.jar 
META-INF/lib/sslr-xpath-1.19.2.jar 

和META-INF/MANIFEST.MF必須除了othet重要的定義包含鏈接到這些庫:

Plugin-Dependencies: META-INF/lib/java-checks-2.2.1.jar META-INF/lib/j 
axen-1.1.4.jar META-INF/lib/sslr-squid-bridge-2.3.jar META-INF/lib/ss 
lr-xpath-1.19.2.jar META-INF/lib/asm-5.0.1.jar META-INF/lib/sslr-core 
-1.19.2.jar META-INF/lib/java-squid-2.2.1.jar 

完成這些步驟後成功部署並且可以使用插件。

上面提到的事實是可以明確的Maven用戶(有很多的POM文件),但用戶的gradle必須創建這樣的基礎上自己和這些信息可能對他們有用。

祝你好運!

+0

查看代碼示例https://github.com/misak69/misak69-sonar-custom/blob/master/build.gradle – kotomisak

相關問題