Почему передача карты из параметров непосредственно в конвейере Jenkins вызывает исключение NotSerializableException приJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему передача карты из параметров непосредственно в конвейере Jenkins вызывает исключение NotSerializableException при

Сообщение Anonymous »

Я столкнулся с ошибкой NotSerializableException: java.io.PrintWriter в моем конвейере Jenkins при попытке обработать карту, переданную через параметры. Интересно, что когда я использую метод CollectEntries для клонирования карты, ошибка больше не возникает. Я не уверен, почему прямое использование Map приводит к проблемам сериализации, и хотел бы понять причину.
Вот мой текущий код:

Код: Выделить всё

import groovy.text.SimpleTemplateEngine

def call(Map parameters = [:]){

def bindings = (parameters.bindings ?: error('No bindings found')).collectEntries { [it.key, it.value] }

echo "Class of parameters.bindings: ${bindings.getClass()}"

def bindings2 = parameters.bindings

def result = generateHelmFromTemplate(bindings as Map) // Does work perfectly fine!

def result2 = generateHelmFromTemplate(bindings2 as Map) // Does not work! -> java.io.NotSerializableException

echo "Result:\n${result}"

}

def generateHelmFromTemplate(Map bindings2) {
// Load the template from library resources
def templateContent = libraryResource('templates/helm-template.yaml')

def engine = new SimpleTemplateEngine()
return engine.createTemplate(templateContent).make(bindings2).toString()
}

Обходной путь, решающий проблему:
Я изменил код, чтобы клонировать карту привязок с помощью CollectEntries, что предотвращает исключение NotSerializableException:< /p>

Код: Выделить всё

    def bindings = (parameters.bindings ?: error('No bindings found')).collectEntries { [it.key, it.value] }

[*]Попробовал передать карту напрямую.
[*]Использовал CollectEntries для клонирования карты параметров.


Подробнее здесь: https://stackoverflow.com/questions/791 ... cause-a-no
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»