2009-11-11 102 views
6

我想用JavaCompiler来动态创建一些类。javax.tools是否依赖于JDK?

我发现了javax.tools包的源代码,但没有实现;在互联网上的一些帖子说这取决于tools.jar,我不知道tools.jar与JRE的联系。

那么,我可以在没有安装JDK的JRE环境中运行程序吗?

另一个问题,JavaCompiler的实现细节是什么,它是否创建了一个调用javac命令的新过程?

感谢

回答

8

JRE的需要包括在包中的接口和类,但并不需要提供实现。

Sun的JRE没有,并且从调用ToolProvider.getSystemJavaCompiler()返回null。

This other question地址Java 5的

下面是关于如何使用Eclipse的编译器作为javax.tools.JavaCompiler的实施blog post by Morten Nobel-Jørgensen

JavaCompiler javac = new EclipseCompiler(); 
+0

谢谢,我已经完成了编码,但是如果getSystemJavaCompiler()返回null,程序将会失败。所以我需要避免它 – Brodie 2009-11-11 09:43:57

+0

博客文章链接已死,更新的链接是[这里](http://blog.nobel-joergensen.com/2008/07/16/using-eclipse-compiler-to-create- dynamic-java-objects-2 /) – prunge 2011-09-06 04:10:32

+0

@prunge谢谢。 – 2011-09-07 02:43:47