JavaCompiler из JDK 1.6: как записать байты класса непосредственно в массив byte []?

Итак, я недавно узнал о новомAPI JavaCompiler доступно в JDK 1.6. Это делает его очень простым для компиляцииString к.class файл напрямую из запущенного кода:

String className = "Foo";
String sourceCode = "...";

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

List<JavaSourceFromString> unitsToCompile = new ArrayList<JavaSourceFromString>() 
    {{ 
         add(new JavaSourceFromString(className, sourceCode)); 
    }};

StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
compiler.getTask(null, fileManager, null, null, null, unitsToCompile).call();
fileManager.close();    

ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(className + ".class");
IOUtils.copyStream(fis, bos);

return bos.toByteArray();

Вы можете взять источникJavaSourceFromString изJavadoc.

Это будет очень легко скомпилироватьsourceCode вFoo.class в текущем рабочем каталоге.

Мой вопрос: можно ли скомпилировать прямо вbyte[] массив, и избежать беспорядка иметь дело сFile Ввод-вывод вообще?

Ответы на вопрос(3)

Ваш ответ на вопрос