Hudson插件,Java错误“......不同意InnerClasses属性”

时间:2010-04-22 09:41:57

标签: java hudson hudson-plugins

我试图能够逐步执行名为SVNPublisher的Hudson插件的代码。我检查了SVNPublisher的代码,使用Netbeans打开项目,然后单击“Debug Main project”。这导致Firefox窗口打开地址http://localhost:8080,显示Hudson主页面。单击“新建作业”链接会显示错误页面:

HTTP ERROR: 500

jar:file:/home/francis/svn/svnpublisher/target/work/webapp/WEB-INF/lib/hudson-core-1.319.jar!/lib/hudson/newFromList/form.jelly:43:47: <j:forEach> hudson.scm.SubversionTagAction and hudson.scm.SubversionTagAction$DescriptorImpl disagree on InnerClasses attribute

RequestURI=/newJob
Caused by:

org.apache.commons.jelly.JellyTagException: jar:file:/home/francis/svn/svnpublisher/target/work/webapp/WEB-INF/lib/hudson-core-1.319.jar!/lib/hudson/newFromList/form.jelly:43:47:  hudson.scm.SubversionTagAction and hudson.scm.SubversionTagAction$DescriptorImpl disagree on InnerClasses attribute
    at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:713)
    at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:282)
    at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
    ...

我对Hudson很新,对Java没有很多经验,所以我对这个错误的含义几乎一无所知。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

我知道这个帖子已经过时了,但我刚刚遇到了这个问题,并希望帮助其他人。

当我在一个类中有一个DescriptorImpl时,我发现我遇到了这个问题(这是主类的一个子类)。在我的例子中,这是ResourceAxis包含DescriptorImpl。

当我将DescriptorImpl重命名为ResourceDescriptorImpl时,我开始遇到此问题。然后我开始收到以下错误消息:

Error injecting constructor, java.lang.IncompatibleClassChangeError: org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis and org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis$DescriptorImpl disagree on InnerClasses attribute
at org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis$DescriptorImpl.<init>(ResourceAxis.java:94)

这促使我将ResourceDescriptorImpl更改回DescriptorImpl - 因为它抱怨DiscriptorImpl。那时我收到了这条错误消息:

Error injecting constructor, java.lang.IncompatibleClassChangeError: org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis and org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis$ResourceDescriptorImpl disagree on InnerClasses attribute
at org.jenkinsci.plugins.matrix_resource_manager.ResourceAxis$ResourceDescriptorImpl.<init>(ResourceAxis.java:94)

这个抱怨ResourceDescriptorImpl。我意识到我每次都没有进行Clean构建,并且旧的编译代码可能会导致问题(因为我只更改了一个类,因此另一个类可能无法重新编译)。如果您看到此问题,请尝试执行干净构建,看看是否能解决您的问题。

希望这有帮助。

答案 1 :(得分:1)

我遇到了同样的问题,不幸的是我还没能解决它。正如VonC所提到的,它可能与1.5和1.6之间的泛型使用方式的变化有关,这是有问题的,因为即使你安装1.5版本hudson需要1.6来构建并通过hpi:run运行。

我注意到如果你在本地安装hudson(http://wiki.hudson-ci.org/display/HUDSON/Meet+Hudson#MeetHudson-TestDrive),你可以使用maven install命令生成插件的.hpi文件并安装它。当我这样做时,我没有得到同样的错误,这让我觉得它可能是hpi:run目标的问题。这应该至少可以让你测试你需要做出的任何改变。

巧合的是,如果您有任何问题,我是该SVN Publish插件的作者。我最近没有做任何改动,但我找到了这个帖子,因为我有一些正在进行并遇到了这个问题;)

谢谢, 布伦特