嘗試使用Runtime.getRuntime()。exec()執(zhí)行Java jar
使用由Process返回的實(shí)例exec()
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
默認(rèn)情況下,創(chuàng)建的子進(jìn)程沒(méi)有自己的終端或控制臺(tái)。其所有標(biāo)準(zhǔn)I /O(stdin,stdout,stderr)操作都將重定向到父進(jìn)程,在該父進(jìn)程中,可以通過(guò)使用方法getoutputStream(),getInputStream()和getErrorStream()獲得的流來(lái)訪問(wèn)它們。
http://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#getInputStream()
getInputStream()返回連接到子流程正常輸出的輸入流。
解決方法在我正在處理的項(xiàng)目中,我需要執(zhí)行資源文件夾(位于類(lèi)路徑中)中的腳本。我只是在測(cè)試最終的腳本功能,因?yàn)槲以赪indows上,所以我需要一種將文件輸出到STDIN的方法,因此我創(chuàng)建了一個(gè)簡(jiǎn)單的cat.jar程序來(lái)克隆unixscat命令。
因此,當(dāng)我執(zhí)行“ java -jar cat.jar someFile.txt”時(shí),它將輸出文件到stdout。我敢肯定,我做的事情有不同的方式。
無(wú)論如何,我想從主Java程序運(yùn)行該JAR。我在做
Runtime.getRuntime().exec('java -jar C:/cat.jar C:/test.txt');
我嘗試過(guò)將正斜杠切換為反斜杠并轉(zhuǎn)義了-沒(méi)有用。什么都沒(méi)有發(fā)送到標(biāo)準(zhǔn)輸出。
在哪里,如果我自己運(yùn)行貓罐,我會(huì)將文件定向到標(biāo)準(zhǔn)輸出。
我在這里做錯(cuò)了什么?這是足夠的信息嗎?
相關(guān)文章:
1. javascript - 請(qǐng)問(wèn)為啥這個(gè)不能渲染成功?2. 老師您好!我有一個(gè)問(wèn)題、3. 后端開(kāi)發(fā) - mysql按時(shí)間分段統(tǒng)計(jì)的sql語(yǔ)句怎么寫(xiě)好?4. list - python 求助5. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法6. mysql - 在下剛?cè)腴T(mén)sql 關(guān)于sql的語(yǔ)法詢(xún)問(wèn)7. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?8. c++ - 如何在python的阻塞的函數(shù)中獲取變量值9. 初來(lái)乍到,相對(duì)路徑問(wèn)題,新手求教10. 網(wǎng)頁(yè)爬蟲(chóng) - python+requests 網(wǎng)頁(yè)重定向求解
