【问题标题】:java.io.IOException: Cannot run program "set": CreateProcess error=2, The system cannot find the file specified [duplicate]java.io.IOException:无法运行程序“set”:CreateProcess错误=2,系统找不到指定的文件[重复]
【发布时间】:2016-07-26 15:43:00
【问题描述】:

我正在尝试从 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);

【问题讨论】:

标签: java command-line operating-system


【解决方案1】:

程序失败是因为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 在 cmets 中提到的 How to set an environment variable in Java using exec?

【讨论】:

  • 怀疑 ping 命令没有在它之前添加 'cmd' 就可以工作。那么为什么只有 set 有这个问题,你能详细说明为什么我应该使用 'cmd' 吗?
  • Windows 有一个ping.exe,因此您可以使用Runtime.exec 启动它,但没有set.exe(也没有echo.exedir.exe ...)
  • 非常感谢。真是太神奇了..
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 2018-09-17
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
相关资源
最近更新 更多