簡體   English   中英

嘗試使用Runtime.getRuntime()。exec()執行Java jar

[英]Trying to execute a Java jar with Runtime.getRuntime().exec()

在我正在從事的項目中,我需要執行資源文件夾(位於類路徑中)中的腳本。 我只是在測試最終的腳本功能,因為我在Windows上,所以我需要一種將文件輸出到STDIN的方法,因此我創建了一個簡單的cat.jar程序來克隆unixs cat命令。

因此,當我執行“ java -jar cat.jar someFile.txt”時,它將輸出文件到stdout。 我敢肯定,我做的事情有不同的方式。

無論如何,我想從主Java程序運行該JAR。 我在做

Runtime.getRuntime().exec("java -jar C:/cat.jar C:/test.txt");

我曾嘗試將正斜杠切換為反斜杠並轉義,但沒有用。 什么都沒有發送到標准輸出。

在哪里,如果我自己運行貓罐,我會將文件定向到標准輸出。

我在這里做錯了什么? 這是足夠的信息嗎?

使用exec()返回的Process實例

Process cat = Runtime.getRuntime().exec("java -jar C:/cat.jar C:/test.txt");
BufferedInputStream catOutput= new BufferedInputStream(cat.getInputStream());
int read = 0;
byte[] output = new byte[1024];
while ((read = catOutput.read(output)) != -1) {
    System.out.println(output[read]);
}


參考文獻:
http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html

默認情況下,創建的子進程沒有自己的終端或控制台。 其所有標准I / O(stdin,stdout,stderr)操作都將重定向到父進程,在該父進程中,可以通過使用getOutputStream(),getInputStream()和getErrorStream()方法獲得的流來訪問它們。

http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()

getInputStream()返回連接到子流程正常輸出的輸入流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM