[英]Using Runtime.exec() with String [ ]
我正在嘗試執行從Java傳遞4個參數的bash腳本。 我可以使用以下代碼完美地執行腳本,而無需使用參數:
try { String command = "bash bash/testbash.sh"; Runtime run = Runtime.getRuntime(); Process pr = run.exec(command); pr.waitFor(); BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line = ""; while ((line=buf.readLine())!=null) { System.out.println(line); } } catch (Exception e) { System.out.println("Exception " + e); e.printStackTrace(); } }
所以我要制作一個String [],將命令和參數都傳遞給Runtime.exec(),如下所示:
try { String[] command ={"bash bash/testbash.sh"}; Runtime run = Runtime.getRuntime(); Process pr = run.exec(command); pr.waitFor(); BufferedReader buf = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line = ""; while ((line=buf.readLine())!=null) { System.out.println(line); } } catch (Exception e) { System.out.println("Exception " + e); e.printStackTrace(); } }
這給了我這個錯誤:
Exception java.io.IOException: Cannot run program "bash bash/testbash.sh": error=2, No such file or directory java.io.IOException: Cannot run program "bash bash/testbash.sh": error=2, No such file or directory at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) at java.lang.Runtime.exec(Runtime.java:615) at java.lang.Runtime.exec(Runtime.java:483) at bashExecuter.main(bashExecuter.java:43) Caused by: java.io.IOException: error=2, No such file or directory at java.lang.UNIXProcess.forkAndExec(Native Method) at java.lang.UNIXProcess.<init>(UNIXProcess.java:135) at java.lang.ProcessImpl.start(ProcessImpl.java:130) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) ... 3 more
這對我來說毫無意義。 bash文件顯然存在,因為我只是將其與String命令一起使用,但是當我將相同的東西與String []命令一起使用時,它不在嗎? 如何傳遞帶有參數的命令?
String []命令= {“ bash bash / testbash.sh”};
String[] command ={"bash", "bash/testbash.sh"};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.