我在 groovy 中有这段代码来解析 json 文件:
File file = new File(configFile)
def config = new JsonSlurper().parse(file)
当我在 Intellij 中运行它时,它工作得很好。然后我构建它以创建一个 .jar 然后在终端中执行它: java -jar file.jar 我得到以下异常执行它:
Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: groovy.json.JsonSlurper.parse() is applicable for argument types: (File) values: [./resources/config.json]
Possible solutions: parse(java.io.Reader), use([Ljava.lang.Object;), wait(), any(), grep(), wait(long)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:70)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at org.forgerock.migrator.ConfigLoader.loadConfig(ConfigLoader.groovy:35)
at org.forgerock.migrator.ConfigLoader$loadConfig.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at org.forgerock.migrator.processor.ProcessorFactory.getProcessor(ProcessorFactory.groovy:42)
at org.forgerock.migrator.processor.ProcessorFactory$getProcessor.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at org.forgerock.migrator.Migration.main(Migration.groovy:35)
我已经确认 groovy 版本是 3.0.1。我也尝试在 java 8 和 11 上运行它。任何建议将不胜感激。谢谢。
更新:
下面是我使用 Groovy 3.0.1 运行代码的方式: