关于Java调用cmd命令找不到相关文件的问题

因业务需要,我使用Java调用命令行执行ffmpeg命令

String command = "ffmpeg -i E:\\translation\\target\\classes\\mediaFile\\xinwen_20191019_0600_0630.mp4 -acodec libmp3lame -ac 1 -ar 16000 E:\\translation\\target\\classes\\mediaFile\\xinwen_20191019_0600_0630.mp3";
        ProcessBuilder builder = new ProcessBuilder(command);
        Process process = builder.start();

该命令放到windos shell里面可以直接执行,但是用Java调用却报错

Caused by: java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。

今天我在进程工作空间内放置了一个text.bat
image.png
并执行命令:
image.png
image.png
成功执行,也就是说,processBuilder会从工作空间找命令,不在工作空间内的命令无效,但我还是很纠结,我不可能把ffmepg和class文件放在一起啊。
而且用 Runtime.getRuntime().exec去调用ffmepg完全没有问题,为什么啊,为什么用processBuilder调就不行啊
浪费大佬时间了,参数明明是一个字符串数组,我扔了一整个字符串进行,简直要蠢死.

阅读 7k
3 个回答

clipboard.png
Java拿字符串数组的第一个值确定要调用什么程序,我把一整个命令变成一个字符串肯定是不行的

使用绝对路径指定 ffmpeg 试试

image.png大哥我扔了个数组进去还是报找不到文件

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题