Java Runtime.getRuntime().exec(命令)始终返回1

Java Runtime.getRuntime().exec(命令)始终返回1,java,shell,Java,Shell,我正试图在我的mac上运行以下代码 String command = "find /XXX/XXX/Documents/test1* -mtime +10 -type f -delete"; Process p = null; p = Runtime.getRuntime().exec(command); p.getErrorStream(); int exitVal = p.waitFor(); exitVal始终为1,并且不会删除文件 任何想法???根据我的实验,find在找不到任何结

我正试图在我的mac上运行以下代码

 String command = "find /XXX/XXX/Documents/test1* -mtime +10 -type f -delete";

Process p = null;
p = Runtime.getRuntime().exec(command);
p.getErrorStream();
int exitVal = p.waitFor();
exitVal始终为1,并且不会删除文件
任何想法???

根据我的实验,
find
在找不到任何结果时将返回
1
find:/XXX/XXX/Documents/test1*:没有这样的文件或目录

首先,您应该真正使用
ProcessBuilder
,这解决了包含空格的参数问题,允许您重定向输入/错误流以及指定命令的开始位置(如果需要)

所以,玩弄它,像这样的东西,似乎对我有用(MacOSX)


尝试使用
查找的完整路径
您是否尝试过阅读
流程的
输入流
错误流
?您还应该使用一个
ProcessBuilder
,这在int-exitWith=p.exitValue()之前添加的程序非常有效;我添加了p.waitFor()以防止异常。谢谢
ProcessBuilder pb = new ProcessBuilder(
        new String[]{
            "find", 
            "/XXX/XXX/Documents/test1",
            "-mtime", "+10",
            "-type", "f",
            "-delete"
        }
);
pb.redirectErrorStream(true);
try {
    Process p = pb.start();
    InputStream is = p.getInputStream();
    int in = -1;
    while ((in = is.read()) != -1) {
        System.out.print((char)in);
    }
    int exitWith = p.exitValue();
    System.out.println("\nExited with " + exitWith);
} catch (IOException exp) {
    exp.printStackTrace();
}