2016-06-22 12 views
1

私は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の中で検索されるべきであると思うだろう。

は私が間違っていますか?誰かがこれにいくつかの光を当てることができますか?

ありがとうございます。

+2

独自のクラスローダーを渡さずに、デフォルトの引数なしのGroovyClassLoaderコンストラクターを使用するだけで何か変わることはありますか? – Gimby

答えて

0

多くのテストの後、私はJavaで起動したGroovyが実際に起動するJavaのクラスパスと同じであることを理解しました。 OPの問題は、私たち側の構成上の問題が原因でした。

将来の読者の方は、この質問How to get classpath in Groovy?をお勧めします。これはデバッグプロセス中に多くの助けをしました。

関連する問題