使用命令行通过Java File编译文件

时间:2012-07-19 17:44:47

标签: java compiler-construction cmd tar

我正在研究编译java文件的方法,我知道你可以使用javac Test.java从命令行编译Java文件,但有没有办法将这个调用传递给命令行?

还有一种方法可以让命令行以相同的方式编译.tar文件......像javac -tar Test.tar这样的东西(从java文件传递命令)..或者什么是最好的方法此?

抱歉,我不太擅长cmd命令

5 个答案:

答案 0 :(得分:4)

Java提供interface来从程序中调用编译器。

JavaCompiler compiler = ToolProvider
    .getSystemJavaCompiler();

StandardJavaFileManager fileManager = compiler
    .getStandardFileManager(null, null, null);

Iterable<? extends JavaFileObject> compilationUnits = fileManager
    .getJavaFileObjectsFromStrings(Arrays.asList("MyClass.java"));

compiler.getTask(null, fileManager, null, null, null, compilationUnits).call();

fileManager.close();

答案 1 :(得分:3)

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("javac Test.java");

答案 2 :(得分:3)

您可以使用Runtime类从Java运行系统命令,例如

Process p = Runtime.getRuntime().exec("javac Test.java"); 
p.waitFor(); 

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 
String line; 
while((line = reader.readLine()) != null) { 
    System.out.println(line); 
} 

答案 3 :(得分:2)

我相信你问的是如何将编译命令从java文件传递到命令行来编译另一个java文件。这样就可以像执行命令行中的任何其他命令一样完成。在我看来,我使用流程构建器来处理所有事情,但是,这是何时使用.exec()并将命令行编译命令作为字符串传递的一个很好的示例。

答案 4 :(得分:2)

试试这个......

Process p = Runtime.getRuntime().exec("javac Test.java");