Java Can';t从Runtime.getRuntime().exec运行gradle任务

Java Can';t从Runtime.getRuntime().exec运行gradle任务,java,exec,Java,Exec,我试图从java程序运行一些gradle任务,所以我使用Runtime.getRuntime().exec()方法,它在windows上可以根据需要工作,但在ubuntu上不工作。这一定是个简单的解决办法,但我就是搞不懂。任何帮助都将不胜感激 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public st

我试图从java程序运行一些gradle任务,所以我使用
Runtime.getRuntime().exec()
方法,它在windows上可以根据需要工作,但在ubuntu上不工作。这一定是个简单的解决办法,但我就是搞不懂。任何帮助都将不胜感激

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException, Exception {

        String[] cmd = {
                "/bin/bash",
                "-c","cd ~/temp/invokeG && gradle --info";
            };
        Process p = Runtime.getRuntime().exec(cmd);
        String lines = "";
        String resoults ="";
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while((lines=bufferedReader.readLine())!=null){
            System.out.println(lines);
        }
        p.waitFor();
        System.out.println("RESPONSE: " + resoults);
    }
}

当你说“它不工作”时,它会给出一个错误吗?如果是,请向我们提供错误提供的所有信息。如果它没有给出预期的输出,这也有助于我们帮助您。它没有给出任何错误,只是没有做我想做的事情。在windows中,我调用getRuntime().exec(“cmd/c cd c:\Temp\invokeG&&gradle assemble”),它可以工作,我可以在Bufferedreader对象中看到响应,但当我尝试从Ubuntu调用它时,比如getRuntime().exec({“/bin/bash”、“-c”、“cd~/temp/invokeG&&gradle dependencies”}它没有给出任何响应您确定文件夹~/temp/invokeG存在吗?当然区分大小写。请检查
Process
对象中的std out和std错误,该
exec()
返回。是的,我确定文件夹~/temp/invokeG存在。因为当我更改为{”/bin/bash“,“-c”,“cd~/temp/invokeG&&ls}”它工作正常,显示目录中的所有文件。正如您所说,我添加了std错误,但它没有显示任何内容。当您说“它不工作”时“它是否给出错误?如果是,请向我们提供错误给出的所有信息。如果它没有给出预期的输出,这也有助于我们帮助您。它没有给出任何错误,只是没有执行我希望执行的操作。在windows中,我调用getRuntime().exec(“cmd/c cd c:\Temp\invokeG&&gradle assemble”)它可以工作,我可以在Bufferedreader对象中看到响应,但是当我尝试从Ubuntu调用它时,比如getRuntime().exec({“/bin/bash”、“-c”、“cd~/temp/invokeG&&gradle dependencies”}它没有给出任何响应。你确定文件夹~/temp/invokeG存在吗?当然区分大小写。请检查
Process
对象中的std out和std错误,该
exec()
返回。是的,我确定文件夹~/temp/invokeG存在。因为当我更改为{/bin/bash',“-c”,“cd~/temp/invokeG&&ls}”它工作得很好,并且显示了目录中的所有文件。所以正如你所说,我添加了std错误,但它没有显示任何内容。