4

このようなGroovyファイルがあります(現在)。

main.groovy

import org.packages.mystuff.JavaClassIAmUsing;
public class MyObject {

    def rate(item){
        def o = evaluate(new File (new File(getClass().protectionDomain.codeSource.location.path).parent),"CommonFunctions.groovy");
        println o.whoami();

    }
}

と呼ばれる別のグルーヴィーなファイルがあります

CommonFunctions.groovy

def whoami() {return 'no body';}

CommonFunctionsスクリプトをメインスクリプトに含めようとしていますが、ビルド時にスクリプトの場所がわかりません (つまり、スクリプト内の絶対ファイル パスまたは Java プロセスの絶対パスをどこに関連してハードコードすることはできません)。スクリプトは保存されます)。

私が知っているのは、スクリプトが一緒にあるか、呼び出し元のスクリプトに関連する場所(サブディレクトリなど)にあるということだけです。

呼び出しスクリプトの場所を見つけようとしましたが、エラーが発生しました

  No signature of method: MyObject.evaluate()

GroovyClassLoader.parseClass(File)メソッドを使用して実行時にメイン スクリプトにアクセスすることを考慮して、このスクリプトを参照するにはどうすればよいですか。

4

1 に答える 1