【发布时间】:2016-07-15 19:26:47
【问题描述】:
我想使用 java 程序在终端(Ubuntu)中运行命令
在网上冲浪后,我发现了使用 java 执行命令的方法
以下是ubuntu中查找ldd版本的代码
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);
}
在上面的代码中,我试图在 ubuntu 中使用 java 找出“ldd verison”。效果很好,我得到了 ldd 版本。
但是当我试图以同样的方式找到我的 ubuntu 的 java 版本时。 代码没有返回任何内容,因为 br.readline 为空。 iwas abel 去查找 ldd vesion,为什么不是 java 版本?
以下是在ubuntu中使用java查找java版本的代码
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);
}
请有人帮我找出如何在 ubuntu 中使用 java 代码查找 java 版本。
【问题讨论】:
-
读取错误流以了解发生了什么。也许 Java 不在 PATH 中。
-
尝试以与输入流相同的方式打印
process.getErrorStream()。您可能会在该流中收到错误消息。 -
我能想到的唯一解释是
java不在您的PATH变量上。如果是这样,当您的 Java 代码运行java -version时,它实际上会出错。 -
收到错误消息后请及时更新问题。
-
System.getProperty("java.specification.version") 如stackoverflow.com/questions/2591083/…中所建议的那样