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

时间:2010-11-25 12:42:04

标签: java compiler-construction

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

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

我该怎么做?

4 个答案:

答案 0 :(得分:3)

看看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<String> opts = new ArrayList<String>();
// 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();

答案 1 :(得分:1)

这必须是一项任务。 Start here

答案 2 :(得分:0)

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

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

希望它有所帮助。

答案 3 :(得分:0)

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