有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java运行时。exec(字符串)限制字符串

我试图使用Java函数Runetime.exec(String)在windows 7计算机的启动文件夹中运行一个程序,如下所示:

Runtime.getRuntime().exec(runner.getPath() + "\\run.bat");

当我运行这个命令时,我得到一个错误,说这个命令无法运行:

Exception in thread "main" java.io.IOException: Cannot run program ""C:\Users\ly
ndsey\AppData\Roaming\Microsoft\Windows\Start": CreateProcess error=2, The syste
m cannot find the file specified

如您所见,文件名在“\Windows\Start”处被截断,此时它应该继续“\Windows\Startup\run.bat”。。我有没有别的选择


共 (2) 个答案

  1. # 1 楼答案

    应该避免使用exec(String)方法,该方法试图将整个字符串解析为command+参数。安全选项是^{},它假定第一个数组元素是命令,其余元素是参数

    那么,写作

    Runtime.getRuntime.exec(new String[] { yourCommandString })
    

    是传达正确信息的可靠方式

  2. # 2 楼答案

    考虑到runner是一个文件实例,这应该是可行的

    Desktop.getDesktop().open(new File(runner, "run.bat"));
    

    它使用Desktop类而不是Runtime,因此您不必将File(runner)转换为它的String表示(这很容易出错)。Runner现在使用“原样”作为要执行的“run.bat”的父目录

    Desktop类的其他优点:现在可以打开任何需要的文件