正确设置文件构造器在Jar文件中工作的路径

时间:2015-02-18 20:00:56

标签: java jar path

我正在编写代码来播放.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文件中也没有声音。 拜托,我无法理解如何改变路径。 希望在帮助。

1 个答案:

答案 0 :(得分:0)

如果文件在JAR中,它不是实际文件,那么它没有路径

您可以改用InputStreamFile只能指向磁盘上的文件,但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);