我正在尝试编写一个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插件,所以我可以使用这些方法?
答案 0 :(得分:0)
如果其他人也有这个问题,我已经得到了jenkins Google小组的答案。 所有需要做的就是更改类加载器策略。见https://wiki.jenkins-ci.org/display/JENKINS/Plugin+Structure#PluginStructure-Classloader