2011-09-13 4 views
1

アップロードされたGroovyファイルの実行を担当するGrailsアプリケーションがあります。私のアプリケーションは、アップロードされたGroovyファイルを検索し、GroovyShellを使ってそれらを実行します。GrailsのGroovy Shellに私のgrails .lib/folderが含まれています

Grailsのlibフォルダに含まれている.jarファイルもGroovyShellのクラスパスに追加されているようです(これは私には良くない)。外部参照を含まないクリーンなクラスパスを取得する方法はありますか?

例:

MyGrailsApp/lib/my-java-code.jar 

my-java-code.jarcom.ClassInExternalLib

GroovyService{ 

    def runTask(){ 
     GroovyShell shell = new GroovyShell() 
     shell.evaluate("assert new com.ClassInExternalLib() != null") 

    } 

} 

答えて

3

は単純にのみ、あなたがGroovyShellを構築する際GroovyShellに公開したいライブラリが含まれているクラスローダにClassLoaderを設定すると呼ばれるクラスが含まれています。詳細については、Groovy API documentationを参照してください。

+0

お返事ありがとうございます。どんなクラスローダーをお勧めしますか?空のURLClassLoaderを使用する必要がありますか?コア・グルーヴィー以外の外部参照は望んでいません。 –

+0

@Michael J. Lee:DZoneのこの記事では、空のClassLoaderを取得する方法について少し話しています。また、コアのGroovyを公開したい場合は、ClassLoaderの構築時にそれを含める必要があることも指摘しています。 http://groovy.dzone.com/news/class-loading-fun-groovy –

関連する問題