相关疑难解决方法(0)

java Runtime.exec 运行shell脚本

我正在使用 Runtime.getRuntime().exec() 从 java 代码运行 shell 脚本。当我将参数作为字符串传递时,代码工作正常

      Runtime.getRuntime().exec("sh test.sh")
Run Code Online (Sandbox Code Playgroud)

由于我必须传递带有空格的路径的附加参数,因此我将 String 替换为 String 数组。

      String[] cmd = {"sh test.sh", "/Path/to my/resource file"};
      Runtime.getRuntime().exec(cmd)
Run Code Online (Sandbox Code Playgroud)

我也试过

      String[] cmd = {"sh test.sh"};
      Runtime.getRuntime().exec(cmd)
Run Code Online (Sandbox Code Playgroud)

但他们都没有工作。它的抛出异常

   java.io.IOException: Cannot run program "sh test.sh":
   java.io.IOException: error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

为什么相同的脚本文件在作为 String 传递时起作用并且与 String 数组一起使用时抛出异常。有没有人遇到过这个问题。请帮助我使用字符串数组作为 Runtime.exec() 的参数来完成这项工作。提前致谢。

java shell runtime.exec

2
推荐指数
1
解决办法
2万
查看次数

从java代码运行shell脚本并传递参数

我正在从Java程序执行shell脚本.我使用Runtime类实现了它.以下是我实施的代码

final StringBuilder sb = new StringBuilder("test.sh");
sb.append("/path to/my/text file");

final Process p = Runtime.getRuntime().exec(sb.toString());
Run Code Online (Sandbox Code Playgroud)

这里sb是字符串缓冲区对象,我在其中附加我的参数并在exec方法中使用它.但问题是我传递的参数"/ path to/my/text file"被认为是4个参数

/path
 to
/my/text
 file
Run Code Online (Sandbox Code Playgroud)

但是如果在shell中运行test.sh"/ path to/my/text file",它被视为单个参数.如何使用Java代码实现相同的功能,我需要将此路径与空格作为单个参数进行考虑.任何请你真的很感激.

java shell shell-exec runtime.exec

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×2

runtime.exec ×2

shell ×2

shell-exec ×1