Вопрос

Существуют ли какие-либо варианты, отличные от Janino, для компиляции "на лету" и выполнения Java-кода в версии 5?Я знаю, что в версии 6 есть API компилятора, но мне нужно работать с виртуальной машиной версии 5.

По сути, мне нужно взять строку, содержащую полный класс Java, скомпилировать ее и загрузить в память.

Это было полезно?

Решение

То, что вы хотите, это что-то вроде Джанино.Мы используем его в течение многих лет.Вы даете ему (почти стандартный) код, и он предоставляет вам классы, чтобы вы могли их использовать.На самом деле он имеет довольно много различных режимов и поддерживает синтаксический сахар 1.5, автоматическую упаковку и тому подобное.

Если вы вызовете javac, вам нужно будет не только быть готовым ко всему, что он делает, но и поместить класс в нужное место или создать дополнительный classloader.

Джанино - это очень просто.Это должно быть именно то, что вы ищете.

Другие советы

Программный вызов javac:

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);

Все серверы приложений делают это для JSP навсегда, так что, очевидно, это возможно.Может быть, проверить исходный код tomcat?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top