【问题标题】:Failed to execute child process “'scriptName.sh” (No such file or directory)无法执行子进程“'scriptName.sh”(没有这样的文件或目录)
【发布时间】:2019-01-17 21:16:03
【问题描述】:
String command= "/usr/bin/gnome-terminal.wrapper -e 'startDemonstrator.sh; bash'";
File workDir = new File("/home/malju/Desktop");
Process pr = Runtime.getRuntime().exec(command, null, workDir);

执行这行代码后,我得到了上面的错误。我的脚本位于桌面文件夹中。我已经尝试添加 ./startDemonstrator 和完整路径。我总是收到上面的错误。可能是什么原因?

我只是想在终端打开后打开一个 sh 脚本。

【问题讨论】:

  • 请提供您用于手动执行的命令。是不是像/usr/bin/gnome-terminal.wrapper -e 'startDemonstrator.sh; bash'
  • @AbhijitPritamDutta 你的意思是当我用终端打开它时?我只是去 dekstop 文件夹并在那里打开终端,然后输入:./startDemonstrator.sh

标签: java shell terminal process runtime


【解决方案1】:

首先尝试如下:-

String command= "/home/malju/Desktop/startDemonstrator.sh";
Process pr = Runtime.getRuntime().exec(command);
p.waitFor();

如果仍然无法使用 ProcessBuilder 尝试以下方法。

    String result = "";
    String[] command = {"/home/malju/Desktop/startDemonstrator.sh"};
    ProcessBuilder process = new ProcessBuilder(command); 
    Process p ;
    try {
        p = process.start();
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader reader =  new BufferedReader(isr);
        StringBuilder builder = new StringBuilder();
        String line = null;
        while ( (line = reader.readLine()) != null) {
                builder.append(line);
                builder.append(System.getProperty("line.separator"));
        }
        result = builder.toString();
    }
    catch (IOException e)
    {   System.out.print("error");
        e.printStackTrace();
    }

【讨论】:

  • 还是不行……“执行子进程失败”/home/malju/Desktop/startDemonstrator.sh;” (没有这样的文件或目录)"
  • @kokos123,我已经修改了我的答案。现在试试
  • @Abijit 我不想直接调用脚本。我想打开终端,打开终端后我想在我的工作目录中执行脚本
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2021-06-11
  • 2020-06-28
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
相关资源
最近更新 更多