Варианты динамической компиляции в Java 5 - PullRequest
5 голосов
/ 19 февраля 2009

Есть ли другие варианты, кроме Janino, для компиляции на лету и выполнения кода Java в v5? Я знаю, что в v6 есть API компилятора, но мне нужно работать с виртуальной машиной v5.

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

Ответы [ 3 ]

6 голосов
/ 19 февраля 2009

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

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

Янино очень легко. Это должно быть именно то, что вы ищете.

5 голосов
/ 19 февраля 2009

Программный вызов 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);
2 голосов
/ 19 февраля 2009

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

...