有谁知道为什么这两个语句导致显示的异常?
Runtime.getRuntime().exec("assoc .vlan=\"file type description\"");
Runtime.getRuntime().exec("ftype \"file type description\"=" + System.getProperty("user.home")+ "\\folder 1\\folder 2\\my executable.exe\" /inject \"%1\"");
这是例外。
java.io.IOException: Cannot run program "assoc": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
好吧,我已经改变了这个但仍然没有建立关联,而同一个命令是可执行的并且在cmd命令提示符下工作。
Runtime.getRuntime().exec("cmd.exe /c assoc .vlan=\"file type description\"");
Runtime.getRuntime().exec("cmd.exe /c ftype \"file type description\"=\"" + System.getProperty("user.home") + "\\folder 1\\folder 2\\my executable.exe\" /inject \"%1\"");
有任何补充建议吗?谢谢!
答案 0 :(得分:8)
事实证明,assoc
和ftype
是内置shell命令而非可执行文件。对于copy
,dir
等也是如此。您可以使用cmd.exe
参数启动/c
来传递命令行字符串,例如, cmd.exe /c assoc ...
。