1

我的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(); }
4

2 回答 2

6

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

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

于 2012-11-28T00:13:10.960 回答
2

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

它也适用于您的 IDE。

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

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

于 2012-11-28T00:38:08.613 回答