ProcessBuilder giving a “File not found” exception when the file does exist [duplicate]

雨燕双飞 提交于 2019-11-29 07:24:38

The ProcessBuilder constructor receives multiple strings - either as a List<String> or as a variable number of arguments, each of type String:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html#ProcessBuilder(java.util.List) http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html#ProcessBuilder(java.lang.String...)

You're experiencing difficulties because you passed the entire command as one string, causing the JVM to look for a program called "find /home/root/multicraft/servers/ -name '*.log' -delete", not find.

You'll have to separate the long command into parts. Such as:

ProcessBuilder pb = new ProcessBuilder("find", ".", "-name", "'*CoreData*"...);
    try {
        ProcessBuilder probuilder = new ProcessBuilder("<Absolute Path To>/find /home/root/multicraft/servers/ -name '*.log' -delete");
        probuilder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }

<Absolute Path To> should ideally be /bin or /usr/bin

ProcessBuilder probuilder = new ProcessBuilder("find /home/root/multicraft/servers/ -name '*Backup*' -delete");
probuilder.directory(new File("<Absolute Path To>"));
probuilder.start();

probuilder.directory expects the working directory where find.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!