Jar可执行文件不是播放wav,而是播放midi并加载其他资源

时间:2015-12-03 02:24:24

标签: java audio wav executable-jar

将所有内容打包到我的jar后,声音停止工作,如果我使用JOptionPane检查异常,我会得到一个空指针。奇怪的是,它确实适用于midis。

我想我已经尝试了我在这里提出的一切,但似乎没有任何效果。

这是我的项目结构和我的代码(我从Semaforo.java调用它,我正在使用Linux)。有什么提示吗?

代码

Code

结构

Structure

1 个答案:

答案 0 :(得分:0)

系统类加载器之间存在差异,这可能是您通过调用getClassloader()可能访问的内容以及项目中类所使用的搜索路径。

除了从rt.jar JVM运行时加载类之外,系统类加载器不知道如何做任何事情。您的类知道它们从哪个Jar或文件树加载,并且可以从这些位置加载资源。

无论如何,删除getClassloader()并致电class.getResourceAsStream()只为我工作。

public class WavTest
{
   public static void main(String[] args) throws Exception {
         InputStream ins = WavTest.class.getResourceAsStream("/res/Crash-Cymbal-1.wav");
         if( ins == null ) {
            System.err.println("Oops");
            return;
         }
         AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(ins);
         Clip clip = AudioSystem.getClip();
         clip.open(audioInputStream);
         clip.start();
         Thread.sleep(2000);
   }
}