如何从我的程序中的Java文件创建一个Java类文件?

4
假设有一个Java文件存在于外部文件夹中。我可以编写一个Java程序来生成该Java文件的.class文件,并将.class文件放在同一外部文件夹中吗?

不,javac肯定可以从.java文件创建类文件。但我必须在不使用javac的情况下运行自己的程序来创建该类。 - Sweet Dream
你说的“external”是什么意思? - 11684
3个回答

3

最简单的方法(对我而言)是包含 tools.jar 并调用 com.sun.tools.javac.Main.compile() 函数。


请注意,sun.tools.javac.Main已被javax.tools.JavaCompiler取代,请参考这里 - Pau Kiat Wee
@PauKiatWee 你是对的,我只是感觉用旧的快速粗糙界面更舒适("......最简单的方式......")。 - Adriano Repetti
请问您能告诉我在哪里可以下载tools.jar吗?还有一件事,这段代码我需要在struts 1框架中实现。 - Sweet Dream
通常在根Java SDK安装目录的lib目录中。 - Adriano Repetti
@Adriano 感谢你们所有人的帮助。我已经将tools.jar放置在我的eclipse lib中。但是我仍然无法使用javax.tools.JavaCompiler。我不能在我的sturts应用程序中使用这段代码吗? - Sweet Dream
@SweetDream 把它放在 $JDK/jre/lib/endorsed/ 目录下。 - Adriano Repetti

1

是的,您可以使用Java编译器完成此操作。

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null,null,null); 

请查看此处以获取更多详细信息


0

在这里:java.lang.Compiler。 这个类有compileClass(Class class)compileClasses(String names)方法。


Compiler类应该被弃用。它与编译Java源代码没有任何关系,在现代JVM中,它根本不起作用。 - boneill
根据文档,它确实如此。我更新了链接,指向Java 6文档。@boneill - 11684
你能提供一个编译Java源代码的这个类的工作示例吗? - boneill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接