2016-06-22 3 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); 

문제는 내가 끝내 파일을 구문 분석하고있을 때, 내 수입이 클래스는 자바 클래스 경로에있는 경우에도 해결되지 않을 것입니다. 다음 줄을 추가하면 :

groovyLoader.addClasspath("MyclassPath"); 

다음과 같이 행을 추가하면 모든 것이 올바르게 작동합니다. 이것은 내가 자바와 Groovy를위한 클래스 패스가 다르다고 생각하게 만든다. 그러나 GroovyClassloader의 생성자 인수로 자바 클래스 로더를 전달할 때부터 Groovy 클래스 경로에서 클래스를 찾을 수 없다면 자바 클래스를 찾아야한다고 생각합니다.

내가 틀렸어? 누군가가 이것에 대해 밝힐 수 있습니까?

감사합니다.

+2

자신의 클래스 로더를 전달하지 않고 기본 no-arg GroovyClassLoader 생성자를 사용하면 아무 것도 바뀌지 않습니까? – Gimby

답변

0

많은 테스트를 거친 끝에 Java에서 시작된 Groovy는 실제로 시작 자바와 동일한 클래스 경로를 가지고 있다는 것을 알았습니다. OP 문제는 우리 측의 구성 문제로 인한 것입니다.

향후 독자를 위해 디버깅 프로세스 중에 많은 도움을 준이 질문을 How to get classpath in Groovy? 님에게 권합니다.

관련 문제