Java 为什么这个音频文件在Windows中工作,而在Ubuntu中不工作?

Java 为什么这个音频文件在Windows中工作,而在Ubuntu中不工作?,java,eclipse,windows,ubuntu,audio,Java,Eclipse,Windows,Ubuntu,Audio,我使用在中找到的音频文件制作JAR文件时采取了以下步骤: 打开Eclipse,创建一个新的Java项目。 下载音频文件,将其放置在项目的src/sound-effects文件夹中。 将下面的代码复制并粘贴到名为Sandbox的类中 在屏幕左侧的Project Explorer窗口中,右键单击项目并单击导出。。。作为JAR文件 使用java-jar在Windows或Linux系统的终端上运行它。 文件结构应如下所示: 我的电脑上安装了x64 Windows 8.1和x64 Ubuntu 14.0

我使用在中找到的音频文件制作JAR文件时采取了以下步骤:

打开Eclipse,创建一个新的Java项目。 下载音频文件,将其放置在项目的src/sound-effects文件夹中。 将下面的代码复制并粘贴到名为Sandbox的类中 在屏幕左侧的Project Explorer窗口中,右键单击项目并单击导出。。。作为JAR文件 使用java-jar在Windows或Linux系统的终端上运行它。 文件结构应如下所示:

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


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

我只是按照以下说明卸载了OpenJDK 1.7:

然后,我使用以下链接安装了Oracle JDK 1.8:

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

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");
    }
}