无法通过Java运行命令,但可以通过cmd CreateProcess error=2运行命令,系统找不到指定的文件

无法通过Java运行命令,但可以通过cmd CreateProcess error=2运行命令,系统找不到指定的文件,java,ffmpeg,mp3,wav,Java,Ffmpeg,Mp3,Wav,我无法将我的MP3转换为wavs,以便于使用Java进行数据操作。我可以在调试时打开一个命令提示符并复制存储在s中的确切字符串,这将正确创建wav文件。代码如下。我能够使用ffmpeg,通过这种方式构建字符串,根据曲目列表将一些MP3分割成单独的曲目。我重新安装了Windows10,所以我认为这与此有关。有我必须改变的设置吗?为什么它会在命令提示符下运行,而不是在Java中运行 package mp3towav; import java.io.File; import java.io.IOEx

我无法将我的MP3转换为wavs,以便于使用Java进行数据操作。我可以在调试时打开一个命令提示符并复制存储在s中的确切字符串,这将正确创建wav文件。代码如下。我能够使用ffmpeg,通过这种方式构建字符串,根据曲目列表将一些MP3分割成单独的曲目。我重新安装了Windows10,所以我认为这与此有关。有我必须改变的设置吗?为什么它会在命令提示符下运行,而不是在Java中运行

package mp3towav;

import java.io.File;
import java.io.IOException;

public class Mp3towav {

    // mp3 folder
    public static final String MP3FOLDER = "C:\\Users\\Al\\Documents\\Sounds\\PokemonOST\\YellowOST\\MP3";

    public static void main(String[] args) throws IOException {

        // Gets the mp3 files and converts them to wav
        File mp3folder = new File(MP3FOLDER);

        String[] mp3s = mp3folder.list();

        File f;

        String s; 

        for(int i = 0; i < mp3s.length; i++) {
            f = new File(mp3s[i]);
            s = ("ffmpeg -i " + MP3FOLDER + "\\" + f.getName() + " " + (MP3FOLDER + "\\" + f.getName()).replaceAll("MP3", "WAV").replaceAll("mp3", "wav"));
            Runtime.getRuntime().exec(s);
            System.out.println("test");
        }



    }

}
包mp3towav;
导入java.io.File;
导入java.io.IOException;
公共级Mp3towav{
//mp3文件夹
公共静态最终字符串MP3FOLDER=“C:\\Users\\Al\\Documents\\Sounds\\PokemonOST\\yellowst\\MP3”;
公共静态void main(字符串[]args)引发IOException{
//获取mp3文件并将其转换为wav
文件mp3folder=新文件(mp3folder);
字符串[]mp3s=mp3folder.list();
文件f;
字符串s;
for(int i=0;i
编辑


所以我从来没有让Java使用PATH,但是在Java中添加了ffmpeg可执行文件的绝对路径。

我必须将路径添加到ffmpeg文件箱,包括文件名ffmpeg.exe,而不是让Java依赖windows中的路径变量,即使ffmpeg在CMD窗口中正常工作。

链接的问题甚至没有答案,而且已经存在4年了。FFMPEG显然在PATH中,因为cmd在运行确切的字符串时没有问题。@AlGJohnston您是说如果使用完整的路径,例如:
c:\\FFMPEG\\FFMPEG.exe
,它可以正常工作吗?如果这是一个令人满意的解决方案,那么将其添加为帮助处于类似情况的其他人的答案。谢谢