在Jenkins中使用带有Reader的Groovy JsonSlurper导致IllegalArgumentException

时间:2015-09-22 22:32:43

标签: groovy jenkins illegalargumentexception reader jsonslurper

我使用Groovy 2.4.3从Jenkins非系统Groovy脚本执行以下代码

private void readJsonFile() {
    if (testsValid == false) {
        def jsonSlurper = new JsonSlurper()
        try {                   
            println "FileReader("+jsonFileName+")"
            def fr = new FileReader(jsonFileName)
            println "About to slurp from FileReader "+fr
            println "Class: " + fr.getClass()
            tests = jsonSlurper.parse(fr)
        } catch (FileNotFoundException e) {
            println "Properties File Not Found: "+jsonFileName
            e.printStackTrace()
        } catch (IllegalArgumentException e) {
            println "Illegal Argument: " + e.getCause()
            e.printStackTrace()
        }
    }
}

但是,当我运行它时,我得到以下异常:

FileReader(/var/lib/jenkins/workspace/2TierUtmsLog2/resources/utmsdata.json)
About to slurp from FileReader java.io.FileReader@125d92c
Class: class java.io.FileReader
Caught: java.lang.IllegalArgumentException: argument type mismatch
java.lang.IllegalArgumentException: argument type mismatch
    at JenkinsJsonTestDao.readJsonFile(JenkinsJsonTestDao.groovy:82)
    at JenkinsJsonTestDao.readJenkinsUtmsTest(JenkinsJsonTestDao.groovy:51)
    at JenkinsTestDaoIf$readJenkinsUtmsTest.call(Unknown Source)
    at JenkinsTestLogger.logTestResult(JenkinsTestLogger.groovy:32)
    at JenkinsTestLoggerIf$logTestResult.call(Unknown Source)
    at JenkinsLog.logTest(JenkinsLog.groovy:76)
    at JenkinsLog$logTest.call(Unknown Source)
    at JenkinsLog.main(JenkinsLog.groovy:44)
Build step 'Execute Groovy script' marked build as failure

JsonSlurper.parse(Reader r)方法确实需要一个Reader,所以我不明白为什么这不起作用。我也尝试过使用JsonSlurper.parse(String s)方法,但是得到了同样的错误。我还打印出了通过FileReader读取的内容,这是正确的。

任何人都可以发现我做错了什么,或者这是我遇到的另一个Jenkins限制。

添加了所需信息: jsonSlurper: groovy.json.JsonSlurper@19e733e Print of new File(...) { "job": [ { "jenkins_name": "ForceAResult-fail", "utmsEnabled": "1", "utmsCycleId": "1", "utmsProejct": "Unity", "utmsTeam": "CA-SS System Software", "utmsTestName": "Force_a_test", "utmsTestPlanId": "2", "utmsTestSetId": "3", }, { "jenkins_name": "ForceAResult-pass", "utmsEnabled": "1", "utmsCycleId": "1", "utmsProejct": "Unity", "utmsTeam": "CA-SS System Software", "utmsTestName": "Force_a_test", "utmsTestPlanId": "2", "utmsTestSetId": "3", } ]}

Uncaught Exception: java.lang.IllegalArgumentException: argument type mismatch org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalArgumentException: argument type mismatch at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:92) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2699)

为Divesh添加了

的信息

[EnvInject] - 加载节点环境变量。 在工作空间/ var / lib / jenkins / workspace / Groovy版本的master上构建 System Groovy版本:1.8.9 路径:/ var / lib / ccache / bin:/ c4shares / auto / tools / bin:/ usr / local / bin:/ usr / bin:/ bin:/ usr / bin / X11:/ usr / X11R6 / bin:/ USR /游戏中:/ opt / AccuRev的/ bin中中:/ opt / CmTools / shbin:/ RE /斌:/ RE / thirdparty_tools / JAVA /标签/ LINUX /生产/箱中:/ opt /天马/斌:/ RE / thirdparty_tools /蚂蚁/标签/生产/ bin中:/ c4shares /自动/ devutils / bin中:/ usr / lib中/ MIT / bin中:/ usr / lib中/ MIT / sbin目录:在/ usr / NX / bin中

GROOVY_HOME:null

[Groovy Version] $ /var/lib/jenkins/tools/hudson.plugins.groovy.GroovyInstallation/Groovy_2.4.3/bin/groovy“/ var / lib / jenkins / workspace / Groovy Version / hudson6179818785298037506.groovy” 2015年9月24日上午8:11:25 org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule newModule 警告:模块[groovy-nio] - 无法加载扩展类[org.codehaus.groovy.runtime.NioGroovyMethods] 执行Groovy脚本 - 非系统

启动Divesh的请求:

public java.lang.Object groovy.json.JsonSlurper.parse(byte[])
public java.lang.Object groovy.json.JsonSlurper.parse(char[])
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.File)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.InputStream)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.Reader)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL)
public java.lang.Object groovy.json.JsonSlurper.parse(byte[],java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.File,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.InputStream,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.util.Map)
public java.lang.Object groovy.json.JsonSlurper.parse(java.util.Map,java.net.URL)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.util.Map,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.util.Map,java.net.URL,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parseText(java.lang.String)Finished: SUCCESS

0 个答案:

没有答案