java Jenkins:addorreplacement()引发奇怪的异常
我试图用我正在编写的触发器插件向作业中添加参数。这是一行有罪的代码:
job.addOrReplaceAction(new ParametersAction(new StringParameterValue("repoAction", "testan", "test")));
Maven编译和构建插件非常好。但是,一旦激活触发器,就会引发异常:
java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.removeAll(Collections.java:1068) at hudson.model.Actionable.addOrReplaceAction(Actionable.java:206) at plugin package.GitHubRepoTrigger.run(GitHubRepoTrigger.java:38)
...
我深入研究了Jenkins Actionable类的源代码,并注意到addOrReplaceAction()
函数使用了一个List<Action>
集合,它调用了集合方法removeAll()
。然后,当我浏览Java关于此函数的文档时,它注意到:
java.lang.UnsupportedOperationException if the removeAll method is not supported by this collection
到目前为止,我完全不明白为什么会发生这个问题。詹金斯真的有什么问题吗?还是我对添加和修改构建参数的理解完全错误
# 1 楼答案
Jenkins写道,函数可能会导致意外的结果:
见java docs