Скомпилируйте код полностью в памяти с помощью javax.tools.JavaCompiler [duplicate]
This question already has an answer here:
How do you dynamically compile and load external java classes? [duplicate] 2 answersЯ использую JavaCompiler из пакета javax.tools (JDK 1.7) для компиляции некоторых вещей на лету, например:
compiler.run(null, null, "-cp", paths, "path/to/my/file.java");
Это работает, но я хотел бы сделать все это в памяти (например, передать строку с кодом, а не исходный файл, и получить обратно байт-код, а не файл .class). Я обнаружил, что продлениеInputStream
а такжеOutputStream
параметры бесполезны, так как они, вероятно, такие же, как в консоли. Вы знаете способ заставить метод run работать следующим образом? Или вы знаете подтвержденный способ сделать это сgetTask()
метод? (расширение FileManager выглядит легко, но не так просто :)