将所有内容打包到我的jar后,声音停止工作,如果我使用JOptionPane
检查异常,我会得到一个空指针。奇怪的是,它确实适用于midis。
我想我已经尝试了我在这里提出的一切,但似乎没有任何效果。
这是我的项目结构和我的代码(我从Semaforo.java调用它,我正在使用Linux)。有什么提示吗?
代码
结构
答案 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);
}
}