Opções para compilação dinâmica em Java 5
-
05-09-2019 - |
Pergunta
Existem outras que Janino opções para compiliation e execução de código Java no v5 on-the-fly? Eu sei v6 tem a API Compiler, mas eu preciso trabalhar com o v5 VM.
I essencialmente precisa tomar uma string contendo uma classe Java completo, compilá-lo e carregá-lo na memória.
Solução
O que você quer é algo como Janino . Nós usamos isso há anos. Você dar-lhe código (perto standard) e dá-lhe as classes para que você possa usá-los. Ele realmente tem muito poucos modos diferentes e apoia a 1,5 açúcar sintático e auto-boxing e tal.
Se você chamar javac, não só você terá que estar pronto para qualquer coisa que ele faz, então você vai ter de lidar com colocando a classe no lugar certo ou fazer um carregador de classe adicional.
Janino é muito fácil. Deve ser exatamente o que você está procurando.
Outras dicas
Invocando javac programaticamente:
http: // www.juixe.com/techknow/index.php/2006/12/12/invoke-javac-at-runtime/
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main(); String[] options = new String[] { "-classpath", classpath, "-d", outputDir, filename }; javac.compile(options);
Todos os servidores de aplicativos fazer isso por JSP para sempre, então obviamente é possível. Caixa tomcat código fonte talvez?