我正在编写代码来播放.wav文件。 所有的工作都在我的IDE(eclipse)中,但是当我尝试在jar文件中导出时,声音无法播放!在我看来,这是一个路径问题。
此处播放的代码(仅限相关部分)。
File audioFile = new File(audioFilePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
这里有一些我尝试过的解决方案(一个用于行)
audioFilePath=(SoundGame.class.getClassLoader().getResource("").toURI()).toString()+mySourceRelativePath;
audioFilePath=SoundGame.class.getProtectionDomain().getCodeSource().getLocation().getPath()+mySourceRelativePath;
audioFilePath=System.getProperty("user.dir")+mySourceRelativePath;
audioFilePath=this.getClass().getClassLoader().getResource(mySourcePath);
当我尝试使用相同的代码(其中一行)来上传图像时,即使在我的jar文件中也没有声音。 拜托,我无法理解如何改变路径。 希望在帮助。
答案 0 :(得分:0)
如果文件在JAR中,它不是实际文件,那么它没有路径。
您可以改用InputStream
。 File
只能指向磁盘上的文件,但InputStream
可以是您可以读取的任何内容。您甚至可以通过网络连接以这种方式传输音频。
AudioInputStream audioStream = AudioSystem.getAudioInputStream(this.getClass().getClassLoader().getResourceAsStream(mySourcePath));
或者,您可以使用URL。 getResource
会返回一个网址,而getResourceAsStream
会返回InputStream
。并非具有InputStream
的所有内容都有网址,但资源始终包含网址。
URL resourceURL = this.getClass().getClassLoader().getResource(mySourcePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(resourceURL);