繁体   English   中英

使用Java Compiler API而无需安装JDK

[英]Using Java Compiler API without requiring install of JDK

Hello All我正在编写一些软件,允许用户为我的软件包中的特定用途创建自己的Java类。 显然,我的软件需要能够调用Java编译器来编译用户生成的类,以便在我的程序中使用。 但是,我不想要求用户下载和安装整个JDK,以便他们可以访问javac Java编译器。 我知道在Jave 6中有一个新的Java编译器API,但即使这样,只有JRE而不是JDK的用户在尝试实例化Java编译器工具时会得到一个空对象。

那么,什么是使我的程序能够编译Java类同时要求最终用户在他们的机器上安装JRE的最佳方法是什么? 如果这不可能,那么我需要在用户机器上安装的最小库/ jar文件集是什么?

我想另一种可能性是使用JWS(javaws)通过Web启动应用程序。 在这种情况下,我的软件是否可以不需要JDK(我认为主要是tools.jar)? 我会以某种方式将tools.jar与我的软件捆绑在一起吗?

您可以使用Eclipse中的独立Java编译器 它不需要安装JDK,它是您可以在项目中使用的单个JAR文件。 这是在Eclipse本身内部使用的编译器,但它也可以集成到其他程序中。 您可以在http://download.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/index.php找到当前最新的稳定版本,查找Look for JDT Core Batch Compiler。 有关文档,请访问http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jdt.doc.isv/guide/jdt_api_compile.htm

您还可以使用Janino ,它可以编译比完整Java类更小的单元:块,表达式。 它不是完整的编译器,它不支持用户使用的Java语言的所有功能(泛型,注释,枚举......)

要使用java编译器,您需要将tools.jar包含到您的应用程序中(例如,必须由想要加载编译器的类加载器访问 - 最容易通过System类加载器)。

也许http://asm.ow2.org/这会有用吗? 在飞行中生成字节码?

听起来更好的解决方案是使用一些可以在JVM中运行而不必编译的脚本语言。

可能Java Scripting API对您有用。 我相信还有其他选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM