[英]Command is not running while running using java
我想使用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);
}
在上面的代碼中,我試圖在ubuntu中使用Java找出“ ldd verison”。 工作正常,我得到了ldd版本。
但是,當我嘗試以相同的方式找到我的ubuntu的Java版本時。 該代碼未返回任何內容,因為br.readline為空。 我是亞伯找出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版本。
不幸的是,這是Java的實現方式。 看來Java的-version
選項是通過stderr
而不是通常的stdout
打印的
參考: 為什么“ java -version”進入stderr?
這種現象解釋了為什么您的子進程運行命令,但是似乎所有內容都通過stderr通道打印出來了,好像您沒有執行命令失敗,但是當您通過process.getErrorStream()
轉儲錯誤流時,您會看到版本文本。
您應該能夠通過“ java.version ”系統屬性獲取Java版本號。
例:
System.out.println( System.getProperty("java.version") );
輸出:
1.8.0_51
您可能對可以打印的其他Java相關屬性感興趣,例如運行時和產品構建版本等。
請參閱: http : //www.oracle.com/technetwork/java/javase/versioning-naming-139433.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.