我是Groovy的新手,所以我可能做错了 . 我编写了一个配置,由ConfigSlurper采用 . 但是当我真正尝试解析它时会出现问题 . 我的代码如下:

class CharacterMap {
    public static final String CHARACTER_CONFIGURATION = 'location'
    static Map<String,String> characterMap = null
    public static String ASCIIize(String input)
    {
        if (!characterMap)
        {
            def property = System.getProperty( CHARACTER_CONFIGURATION )
            ConfigObject config = null
            if( property ) {
                ConfigSlurper cs = new ConfigSlurper()
                File file = new File( property )
                URL location = file.toURL()
                config = cs.parse(location)
            }
            if (config)
            {
                characterMap = config.characters
            }
            else
            {
                getAnonymousLogger().logp WARNING, getClass().name, 'constructor',
                        "Server configuration groovy file not configured with system property ${CHARACTER_CONFIGURATION}"
                return input
            }
        }
        for (String key: characterMap.keySet())
        {
            if (input.contains(key))
            {
                input = input.replace(key, characterMap.get(key))
            }
        }
        return input
    }

    public static void main(String[] args)
    {
        print ASCIIize(args[0])
    }
}

当它调用parse方法时,它会在线程“main”中抱怨Exception groovy.lang.MissingMethodException:没有方法签名:groovy.util.ConfigSlurper.parse()适用于参数类型:(CharacterMap,java.net.URL )正如你所看到的,我只传入一个参数,它被声明为一个URL . 由于该类的所有方法都是静态的,并且在任何地方都没有引用任何构造函数,因此实际创建一个实例有点奇怪,更奇怪的是它仍然被传递给parse方法 . 我已经阅读了Stack Overflow上的其他人获得MissingMethodException(虽然通常与闭包相关而不是多余的参数),并且它被归咎于Eclipse . 我在IntelliJ而不是Eclipse中运行它 .

编辑:在回应下面的评论时,groovy版本是1.8.6 . 这是堆栈跟踪:

线程“main”中的异常groovy.lang.MissingMethodException:没有方法签名:groovy.util.ConfigSlurper.parse()适用于参数类型:(CharacterMap,java.net.URL)值:[CharacterMap @ 34374a16,file :/ C:/ Program Files(x86)/ JetBrains / IntelliJ IDEA Community Edition 11.1.2 / UCP / config / CharacterMap.groovy]可能的解决方案:解析(java.net.URL),解析(groovy.lang.Script,java .net.URL),在org.codehaus.groovy.runtime中解析(groovy.lang.Script),解析(java.lang.Class),解析(java.lang.String),解析(java.util.Properties) . ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)位于org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java: 46)在org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133)org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)at groovy . util.ConfigSlurper.parse(ConfigSlurper.groovy:148)位于org的org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)的groovy.util.ConfigSlurper $ parse.call(未知来源) . codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)at ucp.cms.search.CharacterMap.ASCIIize( CharacterMap.groovy:26)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)的sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)的ucp.cms.search.CharacterMap.main(CharacterMap.groovy:51)处 . 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:601)at com.intellij.rt.execution.application.AppMain.main(AppMain.java) :120)流程以退出代码1结束