JCodeModel을 사용하여 자바 소스를 생성 중이며 이제 런타임에 컴파일하려고합니다. 하지만 이전에 디스크에 Java 파일을 쓰고 싶지는 않습니다.런타임시 동적으로 생성 된 클래스를 파일에 쓰지 않고 쓰기
필자가 볼 수있는 한 동적 컴파일은 javax.tools.JavaCompiler (see example)에서 가능하지만이 경우 소스 코드가 필요한 것처럼 보입니다.
불행히도 JDefinedClass에서 소스 코드를 직접 가져올 수있는 방법을 찾을 수 없습니다. 디스크의 File 객체에 JDefinedClass를 쓰고 이후에 소스를 읽어야하는 것처럼 보입니다.
정말 필요한가, 아니면 몇 가지 해결 방법이 있습니까?
어쩌면 당신이와 Javassist 또는 CGLIB를 시도해야한다? – hoaz
CGLIB는 더 이상 유지 관리되지 않으며 문서화가 제대로되어 있지 않은 것으로 보입니다. 사실 HelloWorld 클래스 또는 무언가가 생성되는 간단한 예제를 찾을 수 없습니다. Javaassist는 소스 코드를 생성 할 가능성을 제공하지 않는 것 같습니다. 단지 바이트 코드를 조작하기위한 것입니다. 다른 이유로 인해 소스 코드가 필요합니다. – Morrandir
제공 한 기사에'JavaFileObject'의 샘플 구현이 있습니다. 그것은'DynamicJavaSourceCodeObject'라고 불리며, string을 매개 변수로 취합니다. 컴파일 할 때 파일에 쓸 필요가 없습니다. 'JavaCompiler'에 피드하십시오. – hoaz