我正在寻找编译 java 文件的方法,并且我知道您可以使用
javac Test.java
从命令行编译 Java 文件,但是有没有办法将此调用传递到命令行?
还有一种方法可以让命令行以相同的方式编译 .tar 文件...类似
javac -tar Test.tar
(从 java 文件传递命令)..或者最好的方法是什么?
抱歉我不太擅长cmd命令
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();
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("javac Test.java");
您可以使用 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);
}
我相信您在问如何将编译命令从 java 文件传递到命令行来编译另一个 java 文件。这就像在命令行中执行任何其他命令一样。在我看来,我对所有事情都使用进程构建器,但是,这是何时使用
.exec()
并将命令行编译命令作为字符串传递的一个很好的例子。
试试这个......
Process p = Runtime.getRuntime().exec("javac Test.java");