用Hudson加载findbugs插件,一开始总是会报如下错误:
SEVERE: Failed Loading plugin analysis-core
hudson.util.IOException2: Failed to load plugin instance for: analysis-core
at org.hudsonci.inject.internal.plugin.SmoothiePluginStrategy.load(SmoothiePluginStrategy.java:193)
at org.hudsonci.inject.internal.plugin.DelegatingPluginStrategy.load(DelegatingPluginStrategy.java:72)
at hudson.PluginManager$2$1$1.run(PluginManager.java:297)
at org.jvnet.hudson.reactor.TaskGraphBuilder$TaskImpl.run(TaskGraphBuilder.java:146)
at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:259)
at hudson.model.Hudson$4.runTask(Hudson.java:698)
at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:187)
at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.LinkageError: loader (instance of org/hudsonci/inject/internal/plugin/PluginClassLoader): attempted duplicate class definition for name: "org/apache/xerces/parsers/SAXParser"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:122)
最重要的信息就是:attempted duplicate class definition for name: "org/apache/xerces/parsers/SAXParser"
说明这个类重复加载了,因此解决方法就是删除重复的该类jar包。
我的解决方法是删除hudson plugin目录中maven-plugin/lib下的xercesImpl-2.9.1.jar.
然后重启Tomcat,插件加载成功。