首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Runtime.exec不能在JDK 7u25上工作

Runtime.exec不能在JDK 7u25上工作
EN

Stack Overflow用户
提问于 2013-09-03 16:38:15
回答 2查看 943关注 0票数 1

在将java更新到最新版本7u25之后,runtime.getruntime().exec就不能工作了。

代码语言:javascript
复制
//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()));

我已经阅读了参考资料:JDK7u25: Runtime.exec 问题更改引起的问题的解决方案

并尝试了以下一些修改:

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

这是:

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

这是:

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

这是:

代码语言:javascript
复制
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”。但这不起作用。我的修改有什么问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-04 08:40:37

应该将命令作为字符串数组传递给Runtime.exec()或ProcessBuilder,其中包含三个元素:命令作为第一个元素,"/C“作为第二个元素,而要在cmd中执行的命令作为第三个元素执行:

代码语言:javascript
复制
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“和用于解释的命令。

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

票数 1
EN

Stack Overflow用户

发布于 2013-09-03 16:45:25

首先,您不应该使用Runtime.exec(),出于实际目的,不推荐使用它。最好改用ProcessBuilder。这里有富足 of 教程为您指路。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18597365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档