gpt4 book ai didi

Java Runtime.exec() 程序不会输出到文件

转载 作者:行者123 更新时间:2023-12-01 19:17:52 28 4
gpt4 key购买 nike

我有一个程序,它接受一个文件作为输入并生成一个 xml 文件作为输出。当我从命令行调用它时,它工作得很好。我尝试使用以下代码从 Java 程序调用它。

    try
{
Process proc = Runtime.getRuntime().exec(c);

try
{
proc.waitFor();
}
catch(InterruptedException e)
{
System.out.println("Command failed");
}
}
catch(IOException e)
{
System.out.println("Command failed");
e.printStackTrace();
}

该程序似乎运行良好,因为它创建了一个 xml 文件;但是,当我打开 xml 文件时,它是空的。我的 Java 程序中没有遇到任何异常,所以我对问题可能是什么感到困惑。为什么命令行程序可以正常工作,但是当从 Java 调用时却不会向它创建的文件输出任何内容。我在想也许这是某种权限的问题。我尝试以 sudo 身份运行该程序(我使用的是 Linux),但没有成功。这个问题我在网上好像找不到答案。希望这里有人能够告诉发生了什么事。 :)

最佳答案

从进程中获取输出和错误流并读取它们以查看发生了什么。这应该告诉你你的命令出了什么问题。

例如:

try {
final Process proc = Runtime.getRuntime().exec("dir");

try {
proc.waitFor();
} catch (final InterruptedException e) {
e.printStackTrace();
}

final BufferedReader outputReader = new BufferedReader(new InputStreamReader(proc
.getInputStream()));
final BufferedReader errorReader = new BufferedReader(new InputStreamReader(proc
.getErrorStream()));

String line;

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

while ((line = errorReader.readLine()) != null) {
System.err.println(line);
}
} catch (final IOException e) {
e.printStackTrace();
}

如果两个流中都没有输出,那么接下来我将检查外部程序以及发送来执行它的命令。

关于Java Runtime.exec() 程序不会输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765250/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com