我如何使用commons-io 2.4和Jenkins?

时间:2013-11-16 23:14:31

标签: maven jenkins jenkins-plugins

我正在尝试编写一个Jenkins插件,我需要一些来自commons-io的方法,这些方法是不可用的。我正在使用IntelliJ IDEA,当尝试使用FileUtils.listFilesAndDirs时,我收到的错误消息是该方法不存在。然后我将以下内容添加到我的pom.xml文件中。

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

在此之后,我可以使用上述方法和之前没有的其他方法。该插件编译时没有错误或警告,但是当我在Jenkins中运行时,我得到异常,表示没有找到动作:

org.apache.commons.io.FileUtils.listFilesAndDirs(Ljava/io/File;Lorg/apache/commons/io/filefilter/IOFileFilter;Lorg/apache/commons/io/filefilter/IOFileFilter;)Ljava/util/Collection;
java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.listFilesAndDirs(Ljava/io/File;Lorg/apache/commons/io/filefilter/IOFileFilter;Lorg/apache/commons/io/filefilter/IOFileFilter;)Ljava/util/Collection;
    at org.jenkinsci.plugins.my_builder.MyBuilder$1.invoke(MyBuilder.java:118)
    at org.jenkinsci.plugins.my_builder.MyBuilder$1.invoke(MyBuilder.java:60)
    at hudson.FilePath.act(FilePath.java:912)
    at hudson.FilePath.act(FilePath.java:885)
    at org.jenkinsci.plugins.my_builder.MyBuilder.perform(DemandwareBuilder.java:60)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:781)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:562)
    at hudson.model.Run.execute(Run.java:1665)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:230)

如果我将依赖项添加到2.4版本的commons-io,为什么会失败?有没有办法使用这个更新版本的commons-io为我的Jenkins插件,所以我可以使用这些方法?

1 个答案:

答案 0 :(得分:0)

如果其他人也有这个问题,我已经得到了jenkins Google小组的答案。 所有需要做的就是更改类加载器策略。见https://wiki.jenkins-ci.org/display/JENKINS/Plugin+Structure#PluginStructure-Classloader