#groovy #jenkins-groovy
#заводной #дженкинс-заводной
Вопрос:
Я новичок в groovy и пытаюсь использовать какой-то заводной код. У меня такой сценарий. У меня есть следующие модули
package com.utils
abstract class Base {
static String data = ''
}
package com.utils
class A extends Base {
static String data = 'dummy'
}
package com.utils
class B extends Base {
static String data = 'dummy'
}
package com.utils
class ShapeFactory {
static Map <String,Object> shapes = [
"a": A,
"b": B
]
static Object get_shapes(String shape) {
return shapes.get(shape);
}
}
And in the main file I am using
и в основном файле, и здесь происходит сбой со странной ошибкой. Я не смог определить причину, я был бы признателен за любую помощь.
import com.utils.ShapeFactory
def shapeA = ShapeFactory.get_shapes('a')
shapeA.data // here it fails with the below error
hudson.remoting.ProxyException: org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object '[]' with class 'java.util.ArrayList' to class 'java.util.Map'
due to: groovy.lang.GroovyRuntimeException:
Could not find matching constructor for: java.util.Map()
Любая помощь будет оценена, спасибо
Комментарии:
1. Ошибка не возникает из-за какого-либо кода, которым вы поделились. Если вы копируете и вставляете в консоль Groovy, она запускается без ошибок
2. Да, также невозможно воспроизвести с любой версией groovy 3.x или 2.x. Пожалуйста, предоставьте пример кода, который приводит к описываемой вами ошибке, желательно с
groovy -v
прикрепленным выводом, чтобы мы знали, на каких версиях java и groovy вы работаете.
Ответ №1:
Извиняюсь, я обнаружил проблему, в базовом классе у меня также была переменная Map, которая была инициализирована как массив
abstract class Base {
static String data = ''
static Map mapper = [] // This has to be [:]
}