Eld*_*ldo 2 groovy jsonslurper
我正在尝试使用 JsonSlurper 来输入来自不同文件的变量。但它在第二次执行时失败了。有人可以帮助我吗?
它从步骤失败 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)
Run Code Online (Sandbox Code Playgroud)
GlobalSettings_Java.json
{
"LOB": {
"SVN_Config_Path": "testpath",
"Local_Path_LOB": "test",
}
}
Run Code Online (Sandbox Code Playgroud)
詹金斯档案
{
"BUILD_INFO": {
"Build_Type" : "Maven",
}
}
Run Code Online (Sandbox Code Playgroud)
错误日志
java.io.NotSerializableException: org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) 处的 groovy.json.internal.LazyMap org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java) ) 在 org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56) 在 org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) 在 org.jboss.marshalling. 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(Unknown Source) 在 sun。reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:271) at org .jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 在 org.jboss.marshaller.marshaller. .java:1032) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 在. 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.RiverWriteObjectMarshaller.javahall4(RiverWriteMarshaller)4在 org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988) 在 org.jboss. (RiverMarshaller.java:967) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 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 .BlockMarshaller.writeObject(BlockMarshaller.java:56) at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50) at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutput9).java io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344) at java.util.TreeMap.writeObject(TreeMap.java:2438) at sun.reflect.GeneratedMethodAccessor475.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl. java:43) 在 java.lang.reflect.Method。invoke(Method.java:498) at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:271) at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976) at org.jboss .marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032) 在 org.jboss.marshalling.river.RiverMarshaller(RiverMarshaller.java:854) :988) 在 org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854) 在 org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58) 在 org.jboss.marshalling(RiverMarshaller.java:854) 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) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent。 FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang .Thread.run(Thread.java:745) 引起:发生的异常:在字段调用者的字段中的字段本地人中的字段 e 中的字段程序中的字段线程中的对象 org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@7abaf96e 已完成: 失败run(ContextResettingExecutorService.java:28) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:异常发生的情况:在字段 e 的字段调用者的字段中,在对象 org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@7abaf96e 中的字段程序中的字段程序中完成:失败run(ContextResettingExecutorService.java:28) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:异常发生的情况:在字段 e 的字段调用者的字段中,在对象 org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@7abaf96e 中的字段程序中的字段程序中完成:失败ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:异常发生:在对象 org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@7abaf96e 中的字段线程中的字段程序中的字段 e 中的字段调用者中的字段本地人完成:失败ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 引起:异常发生:在对象 org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@7abaf96e 中的字段线程中的字段程序中的字段 e 中的字段调用者中的字段本地人完成:失败失败失败
tl;dr:更改JsonSlurper
为JsonSlurperClassic
.
回答:
LazyMap
在表面下使用的类JsonSlurper
经常是这个问题和许多其他问题的根源。JsonSlurper
在当前发行版中发现的旧版本为这些目的JsonSlurperClassic
使用常规的、可序列化的 Java HashMap
,因此不容易出现相同类型的问题。
归档时间: |
|
查看次数: |
2477 次 |
最近记录: |