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

问题描述 投票:0回答:5

我正在寻找编译 java 文件的方法,并且我知道您可以使用

javac Test.java
从命令行编译 Java 文件,但是有没有办法将此调用传递到命令行?

还有一种方法可以让命令行以相同的方式编译 .tar 文件...类似

javac -tar Test.tar
(从 java 文件传递命令)..或者最好的方法是什么?

抱歉我不太擅长cmd命令

java tar javac
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();

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

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); 
} 

2
投票

我相信您在问如何将编译命令从 java 文件传递到命令行来编译另一个 java 文件。这就像在命令行中执行任何其他命令一样。在我看来,我对所有事情都使用进程构建器,但是,这是何时使用

.exec()
并将命令行编译命令作为字符串传递的一个很好的例子。


2
投票

试试这个......

Process p = Runtime.getRuntime().exec("javac Test.java");
© www.soinside.com 2019 - 2024. All rights reserved.