2016-12-23 5 views
0

J'essaye d'utiliser JsonSlurper pour entrer des variables de différents fichiers. Mais il échoue à la deuxième exécution. Quelqu'un pourrait-il m'aider?Echec de l'exécution de JsonSlurper

Il est à défaut de l'étape Jenkins_File_Path = readFile ("${Local_Path_App}" + "/Jenkinsfile")

Main.groovy

import groovy.json.JsonSlurper 

Global_Settings_Path = readFile ("${Main_Local_Path}" + "/Config/GlobalSettings_Java.json") 
def jsonSlurper = new JsonSlurper() 
def GlobalVariables = jsonSlurper.parseText(Global_Settings_Path) 

Jenkins_File_Path = readFile ("${Local_Path_App}" + "/Jenkinsfile") 
def jsonSlurper1 = new JsonSlurper() 
def json = jsonSlurper1.parseText(Jenkins_File_Path) 

GlobalSettings_Java.json

{ 
    "LOB": { 
     "SVN_Config_Path": "testpath", 
     "Local_Path_LOB": "test", 
    } 
} 

Jenkinsfile

{ 
    "BUILD_INFO": { 
     "Build_Type" : "Maven", 
    } 
} 

journaux d'erreurs

java.io.NotSerializableException: groovy.json.internal.LazyMap à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:860) à org.jboss.marshalling.river.BlockMarshaller.doWriteObject (BlockMarshaller.java:65) à org.jboss.marshalling.river.BlockMarshaller.writeObject (BlockMarshaller.java:56) à org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride (MarshallerObjectOutputStream.java:50) à org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride (RiverObjectOutputStream.java:179) à java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:344) à java.util.HashMap.internalWriteEntries (HashMap.java: 1785) à java.util.HashMap.writeObject (HashMap.java:1362) à sun.reflect.GeneratedMethodAccessor469.invoke (Source inconnue) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java .lang.reflect.Method.invoke (Method.java:498) à org.jboss.marshalling.reflect.SerializableClass.callWriteObject (SerializableClass.java:271) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller .java: 976) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) à org.jboss.marshalling.river. RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:967) à org.jboss.marshalling.river. RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) à org.jboss.marshalling.river. RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:967) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java: 988) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.BlockMarshaller.doWriteObject (BlockMarshaller.java:65) à org.jboss. marshalling.river.BlockMarshaller.writeObject (BlockMarshaller.java:56) à org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride (MarshallerObjectOutputStream.java:50) à org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride (RiverObjectOutputStream.java: 179) à java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:344) à java.util.TreeMap.writeObject (TreeMap.java:2438) à sun.reflect.GeneratedMethodAccessor475.invoke (Source inconnue) au soleil .reflect.DelegatingMe thodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) à java.lang.reflect.Method.invoke (Method.java:498) à org.jboss.marshalling.reflect.SerializableClass.callWriteObject (SerializableClass.java:271) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:976) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.river.RiverMarshaller. doWriteFields (RiverMarshaller.java:1032) à org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) à org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) à org.jboss.marshalling.AbstractObjectOutput.writeObject (Résumé bjectOutput.java:58) à org.jboss.marshalling.AbstractMarshaller.writeObject (AbstractMarshaller.java:111) à org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject (RiverWriter.java:132) à org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram (CpsThreadGroup.java:433) à org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram (CpsThreadGroup.java:412) à org.jenkinsci. plugins.workflow.cps.CpsThreadGroup.run (CpsThreadGroup.java:357) à org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access $ 100 (CpsThreadGroup.java:78) à org.jenkinsci.plugins.workflow.cps .CpsThreadGroup $ 2.call (CpsThreadGroup.java:236) à org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup.java:224) à org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService 2.call $ (CpsVmExecutorService.java:63) à java.util.concurrent.FutureTask.run (FutureTask.java:266) à hudson.remoting.SingleLaneExecutorService 1 $. run (SingleLaneExecutorService.java:112) à jenkins.util.ContextResettingExecutorService 1.run $ (ContextResettingExecutorService.java:28) à java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) à java.util .concurrent.FutureTask.run (FutureTask.java:266) à java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) à java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) at java.lang.Thread.run (Thread.java:745) causés par: une exception qui se sont produits: dans les locaux de champ en appelant de champ dans le champ e dans le programme de champ dans les discussions sur le terrain dans objet [email protected] Terminé: ÉCHEC

+0

Essayez d'utiliser 'JsonSlurperClassic' à la place. Je trouve que la classe 'LazyMap' que' JsonSlurper' utilise sous la surface est souvent plus difficile que cela en vaut la peine. 'JsonSlurperClassic' utilise un' HashMap' régulier. – BalRog

+0

Merci. Ça a marché. – Eldo

+0

Super. Je vais l'ajouter comme réponse. – BalRog

Répondre

2

tl; dr: changement JsonSlurper-JsonSlurperClassic.

Réponse:

La classe LazyMap utilisée sous la surface par JsonSlurper est souvent la source de cela et beaucoup d'autres problèmes. L'ancienne version de JsonSlurper, que l'on trouve dans les versions actuelles sous le numéro JsonSlurperClassic, utilise un Java HashMap régulier et sérialisable à ces fins, et n'est donc pas sujet aux mêmes types de problèmes.