특정 클래스를 선언하는 Groovy 스크립트가 있습니다. javassist를 통해 같은 스크립트에서이 클래스에 액세스 할 수 있습니까? 그것을 위해 CtClass 객체를 생성해야합니다.Groovy 스크립트에서 선언 된 클래스를 javassist에서 액세스 할 수 있습니까?
Caught: javassist.NotFoundException: TestClass
javassist.NotFoundException: TestClass
at javassist.ClassPool.get(ClassPool.java:450)
at javassist.ClassPool.getCtClass(ClassPool.java:515)
at javassist.ClassPool$getCtClass$0.call(Unknown Source)
at test.run(test.groovy:14)
그것은 스크립트의 외부에서이 클래스를 이동 물론 가능하고 :
import javassist.*;
public class TestClass {
public String testMethod(String x) {
return x + ".";
}
}
// I can use TestClass now for ordinary operations
TestClass obj = new TestClass();
println(obj.testMethod("a"));
ClassPool pool = ClassPool.getDefault(); // ?
CtClass cc = pool.getCtClass("TestClass"); // this doesn't work
이 마지막 문자열이 오류가 발생합니다 : 여기
스크립트, test.groovy의 예입니다 그것을 .class 파일로 컴파일하면 쉽게로드 할 수 있습니다. 스크립트에서이 클래스를 다시 바이트 배열이나 .class 파일로 동적으로 컴파일 한 다음 javassist에로드하는 것도 가능하다고 생각합니다. 그러나이 클래스를 추가로 (다시) 컴파일하지 않고이 작업을 수행하고 일반 작업에서 이미 액세스 할 수있는 클래스를 사용할 수 있습니까?