如何使用.jar文件包含音乐文件?

时间:2012-11-28 00:09:27

标签: java embedded-resource javasound

我的netbeans遇到了麻烦。我制作了一个只播放背景音乐的节目。当我从netbeans IDE运行程序时,它运行音乐没有任何错误。但是当我试图运行.jar文件时,程序运行正常而没有音乐。我已经检查了一百次路径,但它不起作用。没有错误,没有错误,音乐不是从.jar文件播放的。 为什么这样?

public static synchronized void playSound(final String url) { 
  new Thread(new Runnable() { 
    public void run() { 
     try { 
        Clip clip = AudioSystem.getClip(); 
        AudioInputStream inputStream; 
        inputStream = AudioSystem.getAudioInputStream(
            this.getClass().getResource(url)); 
        clip.open(inputStream);
        clip.start(); 
     } catch (Exception e) { 
        System.err.println(e.getMessage()); 
     } 
    } 
   }).start(); }

2 个答案:

答案 0 :(得分:5)

你应该使用getResourceAsStream(String)来访问这样的文件,你需要确保它们存在于类路径中。

没有任何代码可以查看,我猜你正在尝试使用FileInputStream,或类似的,这是行不通的,因为jar文件没有传统文件系统的概念。

答案 1 :(得分:2)

如果你想运行.jar ...并且你希望在运行.jar时播放你的音乐...那么你真的应该将你的音乐文件放入JAR 。正如Paul Sanwald已经告诉过你的那样,"getResourceAsStream()"是你想要使用的API。

它也适用于您的IDE。

我碰巧更喜欢Eclipse IDE,而在Eclipse中你将文件复制到项目中的“src”文件夹中(在这种情况下,当你导出.jar时它会自动放到正确的位置)

此链接说明了如何在NetBeans中执行此操作: