Это более или менее проблема, вызванная конструктором groovy.lang.Tuple
+ песочницей Jenkins Groovy. Если вы посмотрите на конструктор этого класса, вы увидите что-то вроде этого :
package groovy.lang;
import java.util.AbstractList;
import java.util.List;
public class Tuple extends AbstractList {
private final Object[] contents;
private int hashCode;
public Tuple(Object[] contents) {
if (contents == null) throw new NullPointerException();
this.contents = contents;
}
//....
}
Режим песочницы Groovy (включен по умолчанию для всех конвейеров Jenkins) гарантирует, что каждый вызов проходит проверку утверждения сценария. Это не надежно, и когда он видит new Tuple('a','b')
, он думает, что пользователь ищет конструктор, который точно соответствует двум параметрам типа String
. И поскольку такого конструктора не существует, он выдает это исключение. Однако есть два простых решения этой проблемы.
Используйте groovy.lang.Tuple2
вместо
Если ваш кортеж - пара, используйте вместо него groovy.lang.Tuple2
. Хорошей новостью этого класса является то, что он предоставляет конструктор , который поддерживает два универсальных типа , поэтому он будет работать в вашем случае.
Используйте точный Object[]
конструктор
Кроме того, вы можете использовать точный конструктор, например,
def tuple = new Tuple(["test","test2"] as Object[])
Оба варианта требуют одобрения сценария, прежде чем их можно использовать (однако в этом случае оба конструктора появляются на странице подтверждения сценария в процессе).