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 클래스 경로에서 클래스를 찾을 수 없다면 자바 클래스를 찾아야한다고 생각합니다.
내가 틀렸어? 누군가가 이것에 대해 밝힐 수 있습니까?
감사합니다.
자신의 클래스 로더를 전달하지 않고 기본 no-arg GroovyClassLoader 생성자를 사용하면 아무 것도 바뀌지 않습니까? – Gimby