java运行时exec与xml/jdom

izkcnapc  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(298)

我编写了一个java应用程序,可以导出一些数据。您可以在excel或xml输出之间进行选择。完成所有操作后,我希望创建的文件自动打开。
对于excel,我使用jexcelapi;对于创建xml,我使用jdom。
我有一个方法openfile(),在应用程序退出之前最后调用它:

private void openFile(File file) {

    try {
        String[] cmds = { "cmd", "/c", file.getAbsolutePath() };
        for (String s : cmds) {
            System.out.println(s);
        }

        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec(cmds);
        int exitVal = proc.waitFor();
        System.out.println("Process exitValue: " + exitVal);

    } catch (Throwable t) {
        t.printStackTrace();
    }
}

当我使用excel选项时,文件打开得很好,openfile()的输出如下:

cmd
/c
D:\test.xls
Process exitValue: 0

对于xml输出,我将不工作,尽管我可以手动打开文件。

cmd
/c
D:\test.xml
Process exitValue: 1

所以我想问题出在jdom的某个地方,因为这两次应用程序都是相同的,除了一个方法我编写excel或xml。但我到现在还没有成功。有人能帮我吗?

e0bqpujr

e0bqpujr1#

如果test.xml文件是有效的,那么执行xml文件时出现问题并不是jdom的错。。。。。问题更可能是因为您没有与.xml文件的正确类型的windows文件关联(或者没有您期望的关联)。
打开cmd窗口时会发生什么:winkey->r要打开run对话框,请在框中键入cmd,然后在“dos”提示下键入 cmd /c D:\test.xml . 发生了什么:

C:\>cmd /c C:\pnp64.xml

C:\>

对我来说,它在internet explorer中打开xml文件,它为您做了什么?
编辑:好的,它从命令行打开。现在,要调试流程,您需要从命令中捕获标准输出/错误。我推荐如下:

ProcessBuilder pb = new ProcessBuilder(cmds);
pb.redirectError(new File("C:\TEMP\process.error.log"));
pb.redirectOutput(new File("C:\TEMP\process.output.log"));
Process proc = pb.start();
int exitVal = proc.waitFor();
System.out.println("Process exitValue: " + exitVal);

一旦你做了这些更改,检查(也许在这里发布…)错误和输出文件的内容。

相关问题