音频资源在导出到jar后不会播放

oxiaedzo  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(312)

好的,我有一个简单的程序加载音频文件并播放它们。
我用这个来加载我的音频文件

Clip c1 = null;
    try {
        AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(songPaths[k + 1]).getAbsoluteFile());
        c1 = AudioSystem.getClip();
        c1.open(audioInputStream);

    } catch (Exception ex) {
        System.out.println("Error with playing sound.");
        ex.printStackTrace();
    }

它在我的intellij中运行良好,当我试图构建工件并尝试运行jar时,它无法加载资源。我的songpaths数组如下所示:

private final String[] songPaths = {"res/fcpOriginal.wav", "res/fcpRemix.wav",
                                    "res/ibizaOriginal.wav", "res/ibizaRemix.wav",
                                    "res/pohOriginal.wav", "res/pohRemix.wav",
                                    "res/sugarOriginal.wav", "res/sugarRemix.wav",
                                    "res/wavesOriginal.wav", "res/wavesRemix.wav"};

我不太清楚发生了什么事。任何帮助都将不胜感激。

h9a6wy2h

h9a6wy2h1#

我想出来了。为任何未来的研究人员!
我变了

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(songPaths[k + 1]).getAbsoluteFile());

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(getClass.getResource(songPaths[k + 1]));
8i9zcol2

8i9zcol22#

因此,如果我正确理解了您的目录层次结构,那么您有以下几点:
src公司
out/工件/项目名称\u jar。
对象
你应该把res文件夹的副本放在project\u jar文件夹的名称中。因为应用程序的工作目录现在是您的name of project\u jar文件夹,所以当您使用像您这样的相对路径时,它将在name of project\u jar目录中查找res文件夹。:)

相关问题