2017-06-29 99 views
1

我試圖用我正在寫的Trigger插件將參數添加到作業中。這裏的罪行代碼:Jenkins:addOrReplaceAction()拋出奇怪的異常

job.addOrReplaceAction(new ParametersAction(new StringParameterValue("repoAction", "testan", "test"))); 

Maven編譯和生成的插件完全沒問題。然而,一旦觸發被激活時,會拋出異常:

java.lang.UnsupportedOperationException在 java.util.Collections中的$ UnmodifiableCollection.removeAll(Collections.java:1068) 在hudson.model.Actionable。 addOrReplaceAction(Actionable.java:206) 在插件包 .GitHubRepoTrigger.run(GitHubRepoTrigger.java:38)

...

我花了潛入詹金斯的Actio nable類源代碼,並指出addOrReplaceAction()函數使用調用收集方法removeAll()List<Action>集合。當我再通過Java的文檔看着這種功能,它指出:

如果java.lang.UnsupportedOperationException RemoveAll方法不受此集合

支持這一點上,我完全失去了,爲什麼這個問題正在發生。詹金斯有什麼不對嗎?或者,我的理解是添加和修改構建參數只是錯誤的?

+0

通常情況下,會發生這種情況是因爲創建鏈中某處已創建了不可變列表。我會嘗試手動創建一個列表並添加ParametersAction,看看是否更好。 – Compass

回答

1

詹金斯寫道,功能可能會導致意想不到的結果:

併發調用任何突變的方法可以產生 令人驚訝的結果

java docs