除了 Janino 之外,还有其他选项可用于在 v5 中即时编译和执行 Java 代码吗?我知道 v6 有 Compiler API,但我需要使用 v5 VM。
我基本上需要获取一个包含完整 Java 类的字符串,对其进行编译并将其加载到内存中。
除了 Janino 之外,还有其他选项可用于在 v5 中即时编译和执行 Java 代码吗?我知道 v6 有 Compiler API,但我需要使用 v5 VM。
我基本上需要获取一个包含完整 Java 类的字符串,对其进行编译并将其加载到内存中。
你想要的是Janino 之类的东西。我们已经使用了多年。你给它(接近标准的)代码,它给你类,所以你可以使用它们。它实际上有很多不同的模式,并支持 1.5 语法糖和自动装箱等。
如果您调用 javac,您不仅必须为它所做的任何事情做好准备,您还必须处理将类放在正确的位置或制作额外的类加载器。
Janino 很容易。它应该正是您正在寻找的。
以编程方式调用 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(); 字符串 [] 选项 = 新字符串 [] { “-classpath”,类路径,“-d”,outputDir,文件名 }; javac.compile(选项);
所有的应用服务器都永远为 JSP 做这件事,所以显然这是可能的。结帐tomcat源代码可能吗?