gpt4 book ai didi

java - Runtime.exec 无法在 JDK 7u25 上运行

转载 作者:行者123 更新时间:2023-11-30 04:15:00 24 4
gpt4 key购买 nike

将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:命令作为第一个,“/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();

另请参阅this blogpost特别是这一部分:

<小时/>

黄金法则:

在大多数情况下,cmd.exe 有两个参数:“/C”和用于解释的命令。

<小时/>

编辑:更新的解决方案......

关于java - Runtime.exec 无法在 JDK 7u25 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com