我想使用java程序
在Termninal(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);
}
在上面的代码中,我试图找出" ldd verison"在ubuntu中使用java。哪个工作正常我得到了ldd版本。
但是当我试图以同样的方式找到我的ubuntu的java版本时。 代码没有返回任何内容,因为br.readline为null。我很高兴找到ldd vesion,为什么不是java版本?
以下是使用java在ubuntu中查找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版本。
答案 0 :(得分:2)
不幸的是,这是Java的实现方式。看来Java的-version
选项通过stderr
打印而不是通常的stdout
<强>参考:强> Why does 'java -version' go to stderr?
这种现象解释了为什么你的子进程运行命令,但似乎所有东西都是通过stderr通道打印的,看起来你没有执行命令失败但是当你通过process.getErrorStream()
转储错误流时你看到了而是版本文本。
您应该能够通过&#39; java.version &#39;来获取Java版本号。系统属性。
示例:强>
System.out.println( System.getProperty("java.version") );
<强>输出:强>
1.8.0_51
您可能对可以打印的其他Java相关属性感兴趣 - 例如运行时和产品构建版本等。
请参阅: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html