使用java运行时,命令未运行

使用java运行时,命令未运行,java,ubuntu,terminal,Java,Ubuntu,Terminal,我想使用java程序在TermninalUbuntu中运行一个命令 在网上冲浪后,我找到了使用java执行命令的方法 以下是在ubuntu中查找ldd版本的代码 在上面的代码中,我试图找到在ubuntu中使用java的ldd verison。这很好,我得到了ldd版本 但当我试图以同样的方式找到我的ubuntu的java版本时。 代码未返回任何内容,因为br.readline为null。我想找到ldd vesion,为什么不是java版本 下面是使用java查找ubuntu中java版本的代码

我想使用java程序在TermninalUbuntu中运行一个命令

在网上冲浪后,我找到了使用java执行命令的方法

以下是在ubuntu中查找ldd版本的代码

在上面的代码中,我试图找到在ubuntu中使用java的ldd verison。这很好,我得到了ldd版本

但当我试图以同样的方式找到我的ubuntu的java版本时。 代码未返回任何内容,因为br.readline为null。我想找到ldd vesion,为什么不是java版本

下面是使用java查找ubuntu中java版本的代码


有人请帮我找出如何在ubuntu中使用java代码查找java版本。

不幸的是,这就是java的实现方式。Java的-version选项似乎是通过stderr而不是通常的stdout打印出来的

参考:

这一现象解释了为什么子进程运行了该命令,但似乎所有内容都是通过stderr通道打印的。似乎执行该命令没有失败,但当您通过process.getErrorStream转储错误流时,您会看到版本文本

您应该能够通过“Java.version”系统属性获取Java版本号

例如:

System.out.println System.getPropertyjava.version

输出:

1.8.0_51

您可能对可以打印的其他Java相关属性感兴趣,如运行时和产品构建版本等

见:

读取错误流以了解发生了什么。可能Java不在路径中。请尝试以与inputstream相同的方式打印process.getErrorStream。可能您在该流中收到了一条错误消息。我能想到的唯一解释是java不在您的PATH变量中。如果是这样,当您的Java代码运行Java-version时,它实际上出错了。请在收到错误消息后立即更新问题。System.getPropertyjava.specification.version如中所建议
String[] command = { "ldd", "--version" };
            ProcessBuilder probuilder = new ProcessBuilder(command);
            Process process = probuilder.start();
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line;
            process.waitFor();

            // System.out.println(br.readLine());
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
String[] command = { "java", "-version" };

    ProcessBuilder probuilder = new ProcessBuilder(command);
    Process process = probuilder.start();

    InputStream is = process.getInputStream();
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    process.waitFor();

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