Java 为什么这个音频文件在Windows中工作,而在Ubuntu中不工作?
我使用在中找到的音频文件制作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中不工作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
这里的问题是,我在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");
}
}