簡體   English   中英

Runtime.exec無法在JDK 7u25上運行

[英]Runtime.exec can't work on JDK 7u25

將Java更新到最新版本7u25后,runtime.getruntime()。exec不再起作用。

//jhghai_w.filepath = "C:\\aucs\\data\\tmp.txt";
br = new BufferedReader(new InputStreamReader(Runtime.getRuntime()
                    .exec("CMD.EXE /C \"C:\\Program Files\\juman\\juman.exe \" -e < "+jhghai_w.filepath)
                    .getInputStream()));

我已經閱讀了以下參考文獻:JDK 7u25:由Runtime.exec更改引起的問題解決方案https://blogs.oracle.com/thejavatutorials/entry/changes_to_runtime_exec_problems

並嘗試了如下修改:

br = new BufferedReader(new InputStreamReader(Runtime.getRuntime()
                    .exec("CMD.EXE /C \"C:\\Program Files\\juman\\juman.exe  -e < \""+jhghai_w.filepath)
                    .getInputStream()));

和這個:

br = new BufferedReader(new InputStreamReader(Runtime.getRuntime()
                    .exec(new String[] {"cmd","/C" "C:\\Program Files\\juman\\juman.exe"-e < ",jhghai_w.filepath})
                    .getInputStream()));

和這個:

br = new BufferedReader(new InputStreamReader(Runtime.getRuntime()
                    .exec(new String[] {"cmd","/C" "C:\\Program Files\\juman\\juman.exe","-e“,”<",jhghai_w.filepath})
                    .getInputStream()));

和這個:

br = new BufferedReader(new InputStreamReader(Runtime.getRuntime()
                    .exec(new String[] {"cmd","/C" "\"C:\\Program Files\\juman\\juman.exe"","\"-e < \"",jhghai_w.filepath})
                    .getInputStream()));

我什至直接將“ jhghai_w.filepath”替換為“ C:\\ aucs \\ data \\ tmp.txt”。 但是,這是行不通的。 我的修改有什么問題?

出於實用目的,不建議您首先使用Runtime.exec() 最好改用ProcessBuilder 很多 教程向您展示方法。

您應該將命令作為包含三個元素的String-Array傳遞給Runtime.exec()或ProcessBuilder:第一個命令為命令,第二個命令為“ / C”,第三個元素在cmd中執行:

String[] command = new String[3];
command[0] = "CMD.EXE";
command[1] = "/C";
command[2] = "\"C:\\Program Files\\juman\\juman.exe \" -e < "+jhghai_w.filepath;
ProcessBuilder pb = new ProcessBuilder(command);
pb.start();

另請參閱此博客文章,尤其是本節:


黃金法則:

在大多數情況下,cmd.exe具有兩個參數:“ / C”和用於解釋的命令。


編輯:更新的解決方案...。

暫無
暫無

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

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