使用另一个java程序编译java程序

我想创建一个java程序,从文件中读取另一个java程序,编译它并显示错误和警告。

另外,我想显示从文件中读取并编译的程序的输出。

我怎样才能做到这一点?

看看javax.tools.JavaCompiler

从程序调用Java™编程语言编译器的接口。

编译器可能在编译期间生成诊断(例如,错误消息)。 如果提供了诊断侦听器,则会将诊断程序提供给侦听器。 如果未提供侦听器,则诊断将以未指定的格式进行格式化,并写入默认输出,即System.err,除非另有说明。 即使提供了诊断侦听器,某些诊断程序也可能不适合诊断程序,并将写入默认输出。

这是我最近使用的一小段代码片段:

 JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); fileManager.setLocation(StandardLocation.CLASS_OUTPUT, compileDirList); Iterable compilationUnits = fileManager.getJavaFileObjectsFromFiles(files); List opts = new ArrayList(); // set compiler's classpath to be same as the runtime's opts.addAll(Arrays.asList("-classpath", System.getProperty("java.class.path"))); // do the actual compilation compiler.getTask(null, fileManager, null, opts, null, compilationUnits).call(); 

这必须是一项任务。 从这里开始

只需使用System.exec来执行javac。 然后,您可以将输出管道传输到您完成编译时读取的文件。 像这样的东西:

System.exec(“javac * .java> output.out”); READFILE( “output.out”);

希望能帮助到你。

从文件中读取另一个Java程序,编译它并显示错误和警告的“Java程序”称为Java编译器。 它已经写好了。 您所要做的就是通过API或exec()调用它。