2016-12-23 21 views
0

Ich versuche, JsonSlurper zu verwenden, um Variablen aus verschiedenen Dateien einzugeben. Aber es scheitert bei der zweiten Ausführung. Könnte mir jemand helfen?JsonSlurper Ausführungsfehler

Aus Schritt 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

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

Fehlerprotokolle

java.io.NotSerializableException: groovy.json.internal.LazyMap bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:860) bei org.jboss.marshalling.river.BlockMarshaller.doWriteObject (BlockMarshaller.java:65) bei org.jboss.marshalling.river.BlockMarshaller.writeObject (BlockMarshaller.java:56) bei org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride (MarshallerObjectOutputStream.java:50) bei org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride (RiverObjectOutputStream.java:179) bei java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:344) bei java.util.HashMap.internalWriteEntries (HashMap.java: 1785) bei java.util.HashMap.writeObject (HashMap.java:1362) bei sun.reflect.GeneratedMethodAccessor469.invoke (Unknown Source) bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) auf Java .lang.reflect.Method.invoke (Methode.java:498) bei org.jboss.marshalling.reflect.SerializableClass.callWriteObject (SerializableClass.java:271) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller .java: 976) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) bei org.jboss.marshalling.river. RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:967) bei org.jboss.marshalling.river. RiverMarshaller.doWriteObject (RiverMarshaller.java:854) at org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) bei org.jboss.marshalling.river. RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:967) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.river.RiverMarshaller.doWriteFields (RiverMarshaller.java:1032) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.Java: 988) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.river.BlockMarshaller.doWriteObject (BlockMarshaller.java:65) bei org.jboss. marshalling.river.BlockMarshaller.writeObject (BlockMarshaller.java:56) bei org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride (MarshallerObjectOutputStream.java:50) bei org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride (RiverObjectOutputStream.java: 179) bei java.io.ObjectOutputStream.writeObject (ObjectOutputStream.java:344) bei java.util.TreeMap.writeObject (TreeMap.java:2438) bei sun.reflect.GeneratedMethodAccessor475.invoke (Unknown Source) bei Sonne .reflect.DelegatingMe thodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) bei java.lang.reflect.Method.invoke (Method.java:498) bei org.jboss.marshalling.reflect.SerializableClass.callWriteObject (SerializableClass.java:271) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:976) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.river.RiverMarshaller. doWriteFields (RiverMarshaller.java:1032) bei org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject (RiverMarshaller.java:988) bei org.jboss.marshalling.river.RiverMarshaller.doWriteObject (RiverMarshaller.java:854) bei org.jboss.marshalling.AbstractObjectOutput.writeObject (AbstractO bjectOutput.java:58) bei org.jboss.marshalling.AbstractMarshaller.writeObject (AbstractMarshaller.java:111) bei org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject (RiverWriter.java:132) bei org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram (CpsThreadGroup.java:433) bei org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram (CpsThreadGroup.java:412) bei org.jenkinsci. plugins.workflow.cps.CpsThreadGroup.run (CpsThreadGroup.java:357) bei org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access $ 100 (CpsThreadGroup.java:78) bei org.jenkinsci.plugins.workflow.cps .CpsThreadGroup $ 2.call (CpsThreadGroup.java:236) bei org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup.java:224) bei org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService $ 2.call (CpsVmExecutorService.java:63) bei java.util.concurrent.FutureTask.run (FutureTask.java:266) bei 1 hudson.remoting.SingleLaneExecutorService $. laufen (SingleLaneExecutorService.java:112) bei jenkins.util.ContextResettingExecutorService $ 1.run (ContextResettingExecutorService.java:28) bei java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) bei java.util .concurrent.FutureTask.run (FutureTask.java:266) bei java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) bei java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) bei java.lang.Thread.run (Thread.java:745) Verursacht durch: eine Ausnahme, die aufgetreten: im Feld Einheimischer im Feld Anrufer im Feld e in Feldprogramm in Feld Threads in Objekt [email protected] Abschluss: AUSFALL

+0

Versuchen Sie stattdessen, 'JsonSlurperClassic' zu verwenden. Ich finde, dass die 'LazyMap'-Klasse, die' JsonSlurper' unter der Oberfläche verwendet, oft mehr Probleme verursacht, als es wert ist. 'JsonSlurperClassic' verwendet eine normale' HashMap'. – BalRog

+0

Danke. Es funktionierte. – Eldo

+0

Großartig. Ich füge es als Antwort hinzu. – BalRog

Antwort

2

tl; dr: ändern JsonSlurper-JsonSlurperClassic.

Antwort:

Die Klasse LazyMap von JsonSlurper unter der Oberfläche verwendet wird, ist häufig die Quelle für diese und viele andere Probleme. Die ältere Version JsonSlurper, die in aktuellen Versionen als JsonSlurperClassic zu finden ist, verwendet für diese Zwecke ein reguläres serialisierbares Java HashMap und ist daher nicht anfällig für die gleichen Probleme.

Verwandte Themen