Compile o código totalmente na memória com javax.tools.JavaCompiler [duplicate]
Esta questão já tem uma resposta aqui:
Como você compila e carrega dinamicamente as classes java externas? [duplicado] 2 respostasEu estou usando o JavaCompiler do pacote javax.tools (JDK 1.7) para compilar algumas coisas rapidamente, assim:
compiler.run(null, null, "-cp", paths, "path/to/my/file.java");
Ele funciona, mas eu gostaria de fazer tudo na memória (por exemplo, passar uma string com o código, não o arquivo de origem, e obter o código de byte de volta, não um arquivo .class). Eu achei que estendendo oInputStream
eOutputStream
parâmetros não é útil, pois é provavelmente o mesmo que no console. Você conhece uma maneira de fazer o método de execução funcionar assim? Ou você conhece uma maneira confirmada de fazer isso com ogetTask()
método? (estender o FileManager parece fácil, mas não é tão fácil :)