使用另一个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 extends JavaFileObject> 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()调用它。