为什么此音频文件在 Windows 中有效,但在 Ubuntu 中无效?

Why does this audio file work in Windows, but not Ubuntu?

我按照以下步骤使用在以下位置找到的音频文件制作了一个 JAR 文件:http://www.orangefreesounds.com/loud-alarm-clock-sound/

  1. 打开 Eclipse,创建一个新的 Java 项目。
  2. 下载音频文件,将其放在项目的src/sound-effects文件夹中。
  3. 将下面的代码复制并粘贴到一些名为 Sandbox
  4. 的 class 中
  5. Project Explorer window(可能在屏幕的左侧)中,右键单击您的项目并单击 Export ... 作为 JAR file
  6. 运行 它在 Windows 或 Linux 系统的终端中使用 java -jar.

文件结构应如下所示:

我的电脑上安装了 x64 Windows 8.1x64 Ubuntu 14.04。我的问题是:为什么这个 JAR 程序在 Windows 而不是 Ubuntu?

import java.io.IOException;
import java.net.URL;
import javax.sound.sampled.*;

public class Sandbox
{

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

        URL url = Sandbox.class
                .getResource("/sound-effects/Loud-alarm-clock-sound.wav");
        AudioInputStream ais = AudioSystem.getAudioInputStream(url);
        AudioFormat af = ais.getFormat();
        DataLine.Info info = new DataLine.Info(Clip.class, af);

        Clip clip = (Clip) AudioSystem.getLine(info);
        clip.open(ais);
        clip.start();
        System.out.println("Drain...");
        clip.drain();
        System.out.println("...Drained");
    }
}

这里的问题是我在 Ubuntu 系统上安装了 OpenJDK 1.7(或 IcedTea),在 Windows 系统上安装了 Oracle JDK 1.8。如您所知,OpenJDK 只是 Oracle 的 JVM 和编译器的开源版本。遗憾的是,这意味着它存在一些兼容性问题,例如无法播放某些音频文件。

我只是按照此处的说明卸载了 OpenJDK 1.7
https://askubuntu.com/questions/335457/how-to-uninstall-openjdk

然后我使用 link:
安装了 Oracle JDK 1.8 http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html

现在我的音频文件可以在 Ubuntu 和 Windows 上正常播放了。