java - 为什么此音频文件可在Windows中工作,而在Ubuntu中却不能工作?

标签 java eclipse windows ubuntu audio

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

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

  • 文件结构应如下所示:

    我的计算机上安装了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

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

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

    关于java - 为什么此音频文件可在Windows中工作,而在Ubuntu中却不能工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887506/

    相关文章:

    java - servlet 映射 url 模式上的双通配符 (*) 是什么意思?

    java - jLayer——播放 mp3 导致文件开头失真

    java - 带纹理的 Box2D body ?

    linux - 如何让 Eclipse 识别 KBUILD_MODNAME?

    java - 如何使用 Java 在 Windows 上获取卷 ID?

    windows - Ansible WinRM : Bails out with "[Errno 111] Connection refused"

    java - Wildfly 或 JBoss EAP 7 上的 Restcomm USSD 网关

    android - 从 32 位机器移动到 64 位时,我必须卸载我的应用程序

    java - Eclipse Java 清理功能

    python - 路径库.py : Instantiating 'PosixPath' on Windows