java - 执行java命令时如何获取错误消息?

标签 java

我在我的 java 代码中调用了一个位于 jar 文件中某处的类(使用 java -classpath path/file.jar classname)。

这很好用,但前提是命令格式正确。如果我犯了一个错误,getRuntime().exec(command) 什么也不会说。下面我有工作命令调用。我想在命令不起作用时收到错误 消息。如果我在 cmd (windows) 中犯了一个错误,我会得到一个正确的错误并且我可以修复它。但不在我的 Java 应用程序中。

我留下了“if(input.ready())”,因为如果我不这样做,程序会在命令行不正确时卡住。这发生在执行“input.readLine()”时。

        // Execute a command with an argument that contains a space
        String[] genKOSCommand = new String[] {
                "java",
                "-classpath",
                Config.XDSI_TEST_KIT_HOME + "/xdsitest/lib/xdsitest.jar;"
                        + Config.XDSI_TEST_KIT_HOME + "/xdsitest/classes",
                "ca.etsmtl.ihe.xdsitest.docsource.SimplePublisher", "-k",
                "C:/Softmedical/Viewer_Test/xdsi-testkit-2.0.4/xdsihome/usr/data/image14.dcm" };

        Process child = Runtime.getRuntime().exec(genKOSCommand);

        BufferedReader input = new BufferedReader(new InputStreamReader(
                child.getInputStream()), 13107200);

        String line = null;

        if (input.ready()) {
            while ((line = input.readLine()) != null) {
                System.out.println(line);
            }

            try {
                child.waitFor();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

关于如何从执行的命令中获取错误有什么建议吗?

谢谢

最佳答案

通过使用 getErrorStream:

BufferedReader errinput = new BufferedReader(new InputStreamReader(
                child.getErrorStream()));

当处理来自不同流的输入时,最好在不同的线程中执行(因为那些调用(readLine 等)是阻塞调用。

关于java - 执行java命令时如何获取错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748460/

相关文章:

java - 如何使用 ExecutorService 将两个方法作为线程一个接一个地运行

java - 如何为 libGDX 桌面应用程序设置应用程序图标?

java - jmenuitem选择对话

java - 我如何将用户输入的出生日期转换为日历单元类型以添加​​到参数化构造函数?

Java ExecutorCompletionService 作为 API 响应程序

java - 从空格分隔值读取字符数组

java - 如何让 DocumentFilter 与 JComboBox 一起使用

c# - 具有 Java 和 C# 后端的 JQuery 前端 : design choices

java - 如何查询特定 DBpedia 资源/页面的多个实体?

java - Ormlite 查询生成器条件