java - 从作为进程执行的类读取输出

标签 java process

我正在使用 Runtime.getRuntime().exec(test.class) 创建一个进程并启动一个 test.class 文件。

测试类:

public class test {
    public static void main(String[] args) {
        doReturn();
    }

    public static String doReturn() {
        System.out.println("printed output");
        return "returned output";
    }
}

在启动此进程的 Java 应用程序中,我想检索此 test.class 的输出

我使用的代码如下所示:

Process proc = null;
String[] cmd = { "java", "test"};
proc = Runtime.getRuntime().exec(cmd);

InputStream inputStream = proc.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

String line;
while ((line = bufferedReader.readLine()) != null)
{
    System.out.println(line);
}

这段代码不起作用:没有打印任何内容,并且我的进程的 Exitvalue 为 1。

=> 我应该如何修改它(和/或修改 test.class)以将“打印输出”返回到我的 java 应用程序? => 是否也可以返回“返回的输出”?

(我是 Java 新手,所以请您详细回答一下!谢谢!)

最佳答案

我不知道你想做什么,但尝试删除 .class

String[] cmd = { "java", "test"};

关于java - 从作为进程执行的类读取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065040/

相关文章:

java - 如何从post请求中获取数据?

java - Ruby 的比较器 <=> Vs. Java 的 .equals;比较字符串

java - 对象数组的数组(二维数组)JNI

java - 在 java servlet 中创建异步进程

c - 进程组内的流水线

java - iText7 使用 Java 进行缩进列表格式化

java - long 数据类型中 k 的正幂

c - 在 C 中运行/暂停子进程?

linux - 'per process' 是否也计入共享库/动态库?

c# - Win32Exception:访问在 System.Diagnostics.ProcessManager.OpenProcess() 中被拒绝