2

我正在寻找编译 java 文件的方法,我知道您可以使用命令行从命令行编译 Java 文件javac Test.java,但是有没有办法将此调用传递给命令行?

还有一种方法可以让命令行以相同的方式编译 .tar 文件……比如javac -tar Test.tar(从 java 文件传递​​命令)……或者最好的方法是什么?

抱歉,我不太擅长 cmd 命令

4

5 回答 5

5

Java 提供了一个接口来从程序中调用编译器。

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();
于 2012-07-19T20:08:58.550 回答
3
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("javac Test.java");
于 2012-07-19T17:49:10.780 回答
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); 
} 
于 2012-07-19T17:49:48.403 回答
2

尝试这个....

Process p = Runtime.getRuntime().exec("javac Test.java");
于 2012-07-19T17:55:12.430 回答
2

我相信您在问如何将编译命令从 java 文件传递​​到命令行以编译另一个 java 文件。这将像您对命令行执行任何其他命令一样完成。在我看来,我对所有事情都使用进程构建器,但是,这是一个很好的例子,说明何时使用.exec()和传递你的命令行编译命令作为字符串。

于 2012-07-19T17:50:22.383 回答