Java 声音不适用于 Windows,但适用于 OS X

Java sound doesn't work on Windows, but work on OS X

我在 java 应用程序中播放声音时遇到问题。用户收到消息时正在播放声音。在 OS X 上一切正常,但在 Windows 上却没有。我使用以下命令将文件放入 jar:jar uf client.jar getMsgSound.wav 。我想问题出在找到这个文件上。

public String soundName = "getMsgSound.wav";

public void playSound()
{
try {
    File soundFile = new File(soundName);
    AudioInputStream audioIn = AudioSystem.getAudioInputStream(soundFile);
    Clip clip = AudioSystem.getClip();
    clip.open(audioIn);
    clip.start();

    } catch (UnsupportedAudioFileException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (LineUnavailableException e) {
        e.printStackTrace();
    }
}

即使它在 Mac OS 上,我也不认为你可以通过这种方式从 jar 中读取文件。您可能恰好将文件放在项目中的某个位置并加载了它。

我刚刚测试了直接读取文件而不将其放入 jar 中,它对 Mac OS 和 Windows 都有效。

正如 Greg 刚刚在评论中指出的那样,您应该使用 ClassLoader 从 jar 文件加载它。

请参阅 this post 了解如何使用 ClassLoader 加载资源。