2

私は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])
    }
}

解析メソッドの呼び出しに到達すると、スレッド「メイン」での例外 groovy.lang.MissingMethodException: No signature of method: groovy.util.ConfigSlurper.parse() is applied for argument types: (CharacterMap, java.net.URL ) ご覧のとおり、URL として宣言された引数を 1 つだけ渡しています。クラスのすべてのメソッドは静的であり、コンストラクターはどこにも参照されていないため、インスタンスがまったく作成されていないのは一種の奇妙であり、それが parse メソッドに渡されているのはさらに奇妙です。Stack Overflow で MissingMethodException を取得している他の人を読んだことがありますが (ただし、通常は余分な引数ではなくクロージャーに関連しています)、それは Eclipse のせいです。これをEclipseではなくIntelliJで実行しています。

編集:以下のコメントに応じて、groovy バージョンは 1.8.6 です。スタック トレースは次のとおりです。

スレッド「メイン」groovy.lang.MissingMethodException の例外: メソッドの署名がありません: groovy.util.ConfigSlurper.parse() は引数の型に適用されます: (CharacterMap, java.net.URL) 値: [CharacterMap@34374a16, ファイル: /C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 11.1.2/UCP/config/CharacterMap.groovy]

可能な解決策: parse(java.net.URL)、parse(groovy.lang.Script、java.net.URL)、parse(groovy.lang.Script)、parse(java.lang.Class)、parse(java.lang .String)、parse(java.util.Properties)

org.codehaus.groovy.runtime.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) groovy.util.ConfigSlurper.parse(ConfigSlurper.groovy:148) で groovy.util.ConfigSlurper$parse.call(不明なソース) で org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java :42) org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) で org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) で ucp.cms.search.CharacterMap.ASCIIize(CharacterMap.groovy:26) で ucp.cms.search.CharacterMap.main(CharacterMap.groovy:51) で sun.reflect .NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)、sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)、sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)、java.lang.reflect.Method.invoke(Method) .java:601) com.intellij.rt.execution.application.AppMain.main (AppMain.java:120) でNativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:601) で com.intellij.rt.execution .application.AppMain.main(AppMain.java:120)NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java:601) で com.intellij.rt.execution .application.AppMain.main(AppMain.java:120)

プロセスは終了コード 1 で終了しました

4

0 に答える 0