java ProcessBuilder 调用命令报错异常CreateProcess error=2

ArrayList<String> convert = new ArrayList<String>();
convert.add("ffmpeg -y -i C:/Users/fang/Desktop/1.m4a -ar 8000 -acodec mp3 C:/Users/fang/Desktop/5.mp3"); 
ProcessBuilder builder = new ProcessBuilder();
        try {
            builder.command(convert);
            // 如果此属性为 true,则任何由通过此对象的 start() 方法启动的后续子进程生成的错误输出都将与标准输出合并,
            // 因此两者均可使用 Process.getInputStream() 方法读取。这使得关联错误消息和相应的输出变得更容易
            builder.redirectErrorStream(true);
            Process process = builder.start();

            InputStream is = process.getInputStream();
            InputStreamReader inst = new InputStreamReader(is, "GBK");
            BufferedReader br = new BufferedReader(inst);//输入流缓冲区
            String res = null;
            StringBuilder sb = new StringBuilder();
            while ((res = br.readLine()) != null) {//循环读取缓冲区中的数据
                sb.append(res + "\n");
            }
            System.out.println(sb.toString());
        } catch (Exception e) {
            mark = false;
            System.out.println(e);
            e.printStackTrace();
        } finally {

        }

解决

ProcessBuilder中的命令必须使用全路径指定,否则报错。

D:\\softwares\\ffmpeg-4.4.1-essentials_build\\bin\\ffmpeg.exe -y -i C:/Users/fang/Desktop/1.m4a -ar 8000 -acodec mp3 C:/Users/fang/Desktop/5.mp3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误通常是由于系统找不到指定的可执行文件导致的。可能是因为文件路径不正确或文件不存在。您可以检查文件路径是否正确,并确保文件存在于指定的路径中。另外,您还可以尝试重新安装相关的软件,以确保所有必需的文件都已正确安装。 ### 回答2: 当你在使用JavaProcessBuilder类或Runtime类的exec方法执行外部程序时,可能会遇到"CreateProcess error=2, 系统找不到指定的文件"的错误。 这个错误通常是因为Java无法找到你指定的文件。有几个可能的原因导致这个问题发生: 1. 文件路径错误:请确保你提供的文件路径是正确的。如果你使用的是相对路径,确保文件位于当前工作目录中。如果你使用的是绝对路径,请仔细检查路径是否正确。 2. 磁盘驱动器错误:有时候,你提供的路径可能是不正确的磁盘驱动器。请确保你提供的路径指向正确的磁盘驱动器。 3. 系统环境变量错误:某些情况下,你可能需要将外部程序的路径添加到系统的环境变量中,这样Java才能找到它。你可以手动将该路径添加到系统环境变量中,或者在Java代码中使用绝对路径进行执行。 4. 外部程序不存在:如果你提供的文件路径是正确的,但是文件本身并不存在,那么就会出现这个错误。请确保指定的文件存在于你指定的路径中。 综上所述,"CreateProcess error=2, 系统找不到指定的文件"错误通常是由于文件路径错误、磁盘驱动器错误、系统环境变量错误或外部程序不存在等原因导致的。通过仔细检查路径和确认文件的存在性,你应该能够解决这个问题。 ### 回答3: "CreateProcess error=2, 系统找不到指定的文件" 是一个常见的错误消息,它通常在尝试使用Java的Runtime类或ProcessBuilder类来启动外部程序时出现。 这个错误的原因是由于指定的文件无法在系统中找到。这可能是由于以下几个原因: 1. 文件路径错误:首先,我们需要确保指定的文件路径是正确的。请检查文件路径是否正确,包括文件名的拼写是否正确和路径是否正确。如果路径包含空格或特殊字符,可能需要用引号括起来。 2. 文件不存在:系统找不到指定的文件是因为文件实际上不存在于指定的路径中。请确保文件已经存在,并且您有读取和执行此文件的权限。 3. 环境变量设置错误:如果文件位于系统环境变量中指定的目录中,那么请确保环境变量设置正确。也许在您的系统上,文件所在的目录未被正确地添加到PATH环境变量中。 4. 文件权限问题:如果您是在使用Windows操作系统,那么请确保您具有足够的权限来运行该文件。确保您以管理员身份运行您的程序。 如果您仍然遇到这个错误,您可以尝试使用绝对路径来指定文件以确保正确访问文件。另外,您可以尝试将文件放置在当前工作目录下,以便可以简化文件路径。 作为一般建议,查看您的代码,并确保您指定的文件路径和文件名是正确的,并且您具有正确的权限来执行该文件。如果问题仍然存在,请参考系统错误消息以获得更多帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fang·up·ad

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值