Java.io.IOException: 无法运行程序"set": CreateProcess错误=2,系统找不到指定的文件

3

我试图从Eclipse运行set命令,但是我遇到了以下异常。

java.io.IOException: Cannot run program "set": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at java.lang.Runtime.exec(Runtime.java:620)
    at java.lang.Runtime.exec(Runtime.java:450)
    at java.lang.Runtime.exec(Runtime.java:347)

这是我的代码片段:

String command = "set Path=C:/Program Files/Java/jdk1.6.0_21/bin";
Process p = Runtime.getRuntime().exec(command);

也许这可以帮助:https://dev59.com/jVrUa4cB1Zd3GeqPgAuo#11566302 - Jose Luis
1个回答

10

程序失败是因为 set 不是可执行文件,而是位于命令处理器 cmd.exe 内部的一个命令。

要调用它,请使用

String command = "cmd.exe /c set path=C:/Program Files/Java/jdk1.6.0_21/bin";
Process p = Runtime.getRuntime().exec(command);

但是要注意设置环境变量的陷阱,参见评论中@Berger提到的如何在Java中使用exec设置环境变量?


我有疑问,为什么ping命令可以不在其前面添加“cmd”而正常工作。那么为什么只有set命令会出现问题呢?您能否详细说明一下为什么应该使用“cmd”? - HimaaS
Windows有一个ping.exe,因此您可以使用Runtime.exec启动它,但没有set.exe(也没有echo.exedir.exe...)。 - wero
非常感谢,这真的很棒。 - HimaaS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接