使用java运行时,命令未运行
我想使用java程序在TermninalUbuntu中运行一个命令 在网上冲浪后,我找到了使用java执行命令的方法 以下是在ubuntu中查找ldd版本的代码 在上面的代码中,我试图找到在ubuntu中使用java的ldd verison。这很好,我得到了ldd版本 但当我试图以同样的方式找到我的ubuntu的java版本时。 代码未返回任何内容,因为br.readline为null。我想找到ldd vesion,为什么不是java版本 下面是使用java查找ubuntu中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版本的代码
有人请帮我找出如何在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);
}