Java 如何获得.wav或.mid文件在netbeans之外播放?

Java 如何获得.wav或.mid文件在netbeans之外播放?,java,netbeans,jar,wav,midi,Java,Netbeans,Jar,Wav,Midi,我已经为一个测试游戏创建了一个简单的登录屏幕,它会播放.mid音乐。当您将鼠标悬停在按钮上时,会播放.wav声音。当我编译这个程序时,这两种声音都会在netbeans中播放。当我在netbeans之外运行.jar文件时,它不起作用。任何建议 另外,声音在src文件夹中的一个文件夹中,称为resources。对于.mid音乐,我使用序列,对于.wav,我使用AudioInputStream等等。如果没有代码示例,很难为您提供帮助。你有例外吗 我的猜测是,您的应用程序在NetBeans之外运行时找不

我已经为一个测试游戏创建了一个简单的登录屏幕,它会播放.mid音乐。当您将鼠标悬停在按钮上时,会播放.wav声音。当我编译这个程序时,这两种声音都会在netbeans中播放。当我在netbeans之外运行.jar文件时,它不起作用。任何建议


另外,声音在src文件夹中的一个文件夹中,称为resources。对于.mid音乐,我使用序列,对于.wav,我使用AudioInputStream等等。

如果没有代码示例,很难为您提供帮助。你有例外吗


我的猜测是,您的应用程序在NetBeans之外运行时找不到音乐文件。从NetBeans运行时,您的主目录必须设置为某个值(可能指向您的src/resource文件夹),但在NetBeans外部运行时,您指定了不同的主目录位置(或根本不指定任何主目录)。

很可能您正试图访问应用程序资源,就像它们是
文件一样。应用程序资源通常位于Jar文件中,必须通过
URL
访问。要形成URL,请使用以下内容:

URL urlToMid = this.getClass().getResource("the.mid");

如果不是这样,那么下一个最可能的问题是资源没有包含在Jar中。

如果文件包含在生成的.Jar文件中,另一个可能的问题是区分大小写。如果文件是从常规文件系统加载的(例如,从NetBeans中),则文件名是否区分大小写取决于操作系统的文件系统。在Windows上它不是

一旦文件通过类加载器加载(例如使用getResource()),文件名就区分大小写,并且
Alert.wav
是与
Alert.wav
不同的文件

确保源代码中的文件名与文件系统中的文件名完全相同