Java 执行sesearch命令时,Runtime.getruntime.exec不会返回任何内容

Java 执行sesearch命令时,Runtime.getruntime.exec不会返回任何内容,java,runtime.exec,Java,Runtime.exec,从我所看到的情况来看,这是一个常见的问题,但我尝试将提供的一些建议纳入其中。没有一个对我有用。我是不是搞错了?这就是我想做的 String[] comd1 = { "/bin/sh", "-c", "sesearch", "--allow -s "+tokens[1]," -t "+tokens[2].split(":")[0]," -c "+tokens[2].split(":")[1]," -p "+tokens[3].replace(";","")," sepolicy" };

从我所看到的情况来看,这是一个常见的问题,但我尝试将提供的一些建议纳入其中。没有一个对我有用。我是不是搞错了?这就是我想做的

String[] comd1 = { "/bin/sh", "-c", "sesearch", "--allow -s "+tokens[1]," -t     "+tokens[2].split(":")[0]," -c "+tokens[2].split(":")[1]," -p "+tokens[3].replace(";","")," sepolicy" };

Process pp = Runtime.getRuntime().exec(comd1);
stdInput = new BufferedReader(new InputStreamReader(pp.getInputStream()));
                        String temp, status = null;
                        boolean flag = false;

                        while ((temp = stdInput.readLine()) != null) 
                        {
                            if(temp.contains("Found ") || temp.equals("") || temp.contains("Usage"))
                            {
                            }
                            else
                                flag = true;
                        }  
                        if(flag) status="Yes"; else status="No";
最初设置为false的标志始终为false。它永远不会成为现实。我几乎尝试了comd1字符串数组的所有组合


请提供帮助。

尝试从命令行运行该命令。输出是什么?数组中的每个元素必须是一个单独的参数。每个元素都被您调用的程序解释为一个单独的参数(将其看作是
main(String[]args)
,每个元素都是
args
列表中的一个元素)。尝试使用类似于
{/bin/sh'、“-c”、“seseSearch”、“-allow”、“-s”、标记[1]、“-t”、标记[2]的东西。拆分(“:”[0]、“-c”、标记[2]。拆分(“:”[1]、“-p”、标记[3]。替换(“;”、“)、“sepolicy”}
。我不知道这是否能解决问题,但它会让您更进一步…另外,使用
ProcessBuilder
并将错误输出重定向到std输出…Sotirios:命令行版本为我提供了正确的输出。只是当我从java代码中尝试时,它不起作用。程序员:我也尝试过这个。不走运。屏幕上的返回值将为空。