java - 使用 Runtime#exec() 编译和执行 Java 代码

标签 java runtime.exec

import java.io.*;

public class Auto {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

        try {
            Runtime.getRuntime().exec("javac C:/HelloWorld.java");
            Runtime.getRuntime().exec("java C:/HelloWorld > C:/out.txt");
            System.out.println("END");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个程序能够编译“HelloWorld.java”文件,但不能执行它(HelloWorld)。 谁能建议我如何让它工作? 提前致谢! :) 此外,如果输出可以在另一个文本文件中获取,请说“output.txt”。

最佳答案

当你运行java程序时,你必须在你的项目根目录下,运行java package.to.ClassWhichContainsMainMethod

Runtime.getRuntime().exec()会给你一个Process其中包含 OutputStream和一个 InpuStream到已执行的应用程序。

您可以重定向 InputStream内容到您的日志文件。

在您的情况下,我会使用此执行程序:public Process exec(String command, String[] envp, File dir)像这样:

exec("java HelloWorld", null, new File("C:/"));

将数据从 inputStream 复制到文件(代码在 this post 上被盗):

public runningMethod(){
    Process p = exec("java HelloWorld", null, new File("C:/"));
    pipe(p.getInputStream(), new FileOutputStream("C:/test.txt"));
}

public void pipe(InputStream in, OutputStream out) {
    byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
    int writtenBytes;
    while((writtenBytes = in.read(buf)) >= 0) {
        out.write(buf, 0, writtenBytes);
    }
}

关于java - 使用 Runtime#exec() 编译和执行 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577736/

相关文章:

java - Args 保证非空?

java - 通过 TLS/SSL 将 RESTHeart 连接到 MongoDB

java - 在 Java 运行时设置 Windows PATH 环境变量

Java exec 或运行时无法与 ssh 一起使用

java - 如何使用 exec() 方法在 Java 代码中运行 Windows 控制台应用程序?

Java 拆分空格和特殊字符

java - 如何从 Instant 和时间字符串构造 ZonedDateTime?

java - Python 缺乏静态类型如何影响大型项目的可维护性和可扩展性?

Java Runtime 在程序内部执行与在命令行中执行不同的程序?

java - Jboss Seam Interpolator : could it be use for execute command (java. lang.Runtime.exec)?