2011-09-13 3 views
1

업로드 된 groovy 파일을 실행하는 grails 애플리케이션이 있습니다. 내 응용 프로그램은 업로드 된 Groovy 파일을 찾은 다음 GroovyShell을 사용하여 실행합니다.Grails의 Groovy Shell에 내 grails .lib/폴더가 포함되어 있습니다.

내 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에 노출하고자하는 라이브러리를 포함하는 클래스 로더에 클래스 로더를 설정라는 클래스를 포함 . 자세한 내용은 Groovy API documentation을 참조하십시오.

+0

응답 해 주셔서 감사합니다. 어떤 종류의 클래스 로더를 추천하십니까? 빈 URLClassLoader를 사용해야합니까? 코어 그루비 (core groovy) 이외의 외부 참조는 원하지 않습니다. –

+0

@Michael J. Lee : DZone의이 기사에서는 빈 ClassLoader를 얻는 방법에 대해 설명합니다. 또한 핵심 Groovy를 노출하려면 ClassLoader를 생성 할 때이를 포함시켜야합니다. http://groovy.dzone.com/news/class-loading-fun-groovy –

관련 문제