私はGroovyClassLoader
を使用してJavaからのGroovyスクリプトを実行しようとしています。基本的に、私がやっていることはこれです:Javaから実行されるGroovyスクリプトのクラスパスは同じですか?
GroovyClassLoader groovyLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader());
clazz = groovyLoader.parseClass(myFile);
GroovyObject go = (GroovyObject) go.newInstance();
return go.invokeMethod("MyMethod", myObject);
問題は、私はGroovyのファイルを解析していたとき、私の輸入はクラスがJavaのクラスパスにあるにもかかわらず、解決されないということです。
groovyLoader.addClasspath("MyclassPath");
この場合、すべてが正常に機能しますこれは、Java用とGroovy用の2つの異なるクラスパスがあると思います。私はGroovyClassloaderのコンストラクタの引数としてのJavaクラスローダを渡しているので、しかし、それでもまだ、私はクラスがGroovyのクラスパスで発見されていない場合、彼らはJavaの中で検索されるべきであると思うだろう。
は私が間違っていますか?誰かがこれにいくつかの光を当てることができますか?
ありがとうございます。
独自のクラスローダーを渡さずに、デフォルトの引数なしのGroovyClassLoaderコンストラクターを使用するだけで何か変わることはありますか? – Gimby