0

运行 JAR 时不会播放声音,但在 eclipse 中运行时会播放。

这是我加载剪辑的地方:

public void init(){
    System.out.println("grabbing Music");
    String currentDir = new File("").getAbsolutePath();
    name=new File(currentDir+"\\music\\").list();
    clip=new Clip[name.length];
    soundFile=new File[name.length];
    for(int x=0;x<name.length;x++){
        System.out.println(currentDir+"\\music\\"+name[x]);
        try {
            soundFile[x]= new File(currentDir+"\\music\\"+name[x]);
            AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile[x]);
            DataLine.Info info= new DataLine.Info(Clip.class, sound.getFormat());
            clip[x] = (Clip) AudioSystem.getLine(info);
            clip[x].open(sound);
            clip[x].addLineListener(new LineListener(){
                public void update(LineEvent event) {
                    if (event.getType() == LineEvent.Type.STOP) {
                        event.getLine().close();
                    }
                }
            });
        } catch (LineUnavailableException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (UnsupportedAudioFileException e) {
            e.printStackTrace();
        }
    }

}

在 Eclipse 中运行它时我没有收到任何错误。应该不存在无效目录错误的可能性,那么到底出了什么问题呢?

- 当 jar 在 CMD 中运行时,我没有收到任何错误。

编辑:我觉得我加载音频错误,因此我粘贴了我用来加载文件的代码。在我的搜索中,我没有看到有人使用 File 加载声音文件。想知道这是不是问题?

4

4 回答 4

1

怎么样-

  1. 在 Eclipse 中右键单击您的项目。然后新建-> 源文件夹。
  2. 将源文件夹命名为任何名称。例如music_src。
  3. 复制或拖动 music_src 中的整个音乐目录。然后做罐子。
于 2013-07-31T19:29:38.523 回答
1

为了运行您当前的代码,该文件夹music应位于 jar 文件所在的同一文件夹中。

另一种解决方案是将您的music文件夹打包到 jar 文件中,然后将代码更改为:

InputStream is = getClass().getResourceAsStream("/music/" + name[x]);
AudioInputStream sound = AudioSystem.getAudioInputStream(is);
于 2013-07-31T19:22:25.440 回答
1

我想到的第一件事是你没有将你的声音库类附加到你的 jar 中。

于 2013-07-31T19:18:07.363 回答
0

文件系统很难查看 jar。尝试改用 URL。URL 可以定位 jar 中的位置。这种情况经常发生在人们第一次尝试访问 jar 中的资源时。否则事情看起来很好。

于 2013-08-01T21:21:40.683 回答