我的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(); }
答案 0 :(得分:5)
你应该使用getResourceAsStream(String)来访问这样的文件,你需要确保它们存在于类路径中。
没有任何代码可以查看,我猜你正在尝试使用FileInputStream,或类似的,这是行不通的,因为jar文件没有传统文件系统的概念。
答案 1 :(得分:2)
如果你想运行.jar ...并且你希望在运行.jar时播放你的音乐...那么你真的应该将你的音乐文件放入JAR 。正如Paul Sanwald已经告诉过你的那样,"getResourceAsStream()"是你想要使用的API。
它也适用于您的IDE。
我碰巧更喜欢Eclipse IDE,而在Eclipse中你将文件复制到项目中的“src”文件夹中(在这种情况下,当你导出.jar时它会自动放到正确的位置)
此链接说明了如何在NetBeans中执行此操作: