【问题标题】:Java - How do I load a .wav from inside the jar? [duplicate]Java - 如何从 jar 中加载 .wav? [复制]
【发布时间】:2015-09-27 04:31:27
【问题描述】:

我一直在尝试在我的 java 项目中播放一个 .wav 文件并且我得到了它的工作....或者我是这么认为的。当我将它导出到可执行 jar 文件时,除非它们与 jar 文件位于同一目录中,否则不会播放声音。我希望它加载 jar 文件内部的声音。 这是我现在使用的代码:

    void PlaySound(String filename) {
        try (InputStream in = getClass().getResourceAsStream(filename)) {
            try (AudioInputStream audioIn = AudioSystem.getAudioInputStream(in)) {
                Clip clip = AudioSystem.getClip();
                clip.open(audioIn);
                clip.start();
            }

        } catch (Exception e) {
           e.printStackTrace();
       }
    }

【问题讨论】:

  • wave 文件的路径是什么(在 Jar 文件中),你用什么来尝试加载它?
  • 听起来 Wave 文件没有嵌入到 Jar 文件中。你是如何创建jar文件的?与您的源/项目相关的波形文件位于何处?
  • 什么意思,我用什么来尝试加载它?
  • 你在使用什么路径String(值,如/path/to/my/awesome/sounds/...)?
  • 还没准备好发表评论,想换行。在 jar 文件中,我的声音位于名为 nathan 的文件夹中。这是我的包名。忘了说,这种播放声音的方法效果很好,但在我导出的时候就不行了。

标签: java audio javasound


【解决方案1】:

我需要将其更改为:

void PlaySound(String filename) {
        try (InputStream in = getClass().getResourceAsStream(filename)) {
            InputStream bufferedIn = new BufferedInputStream(in);
            try (AudioInputStream audioIn = AudioSystem.getAudioInputStream(bufferedIn)) {
                Clip clip = AudioSystem.getClip();
                clip.open(audioIn);
                clip.start();
            }
        } catch (Exception e) {
           e.printStackTrace();
       }
    }

但我实际上从这里得到了这个解决方案: java.io.IOException: mark/reset not supported

【讨论】:

    猜你喜欢
    • 2012-11-21
    • 2017-07-20
    • 1970-01-01
    • 2017-12-06
    • 2023-03-10
    • 1970-01-01
    • 2013-08-26
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多