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

Java 正确设置文件构造函数在Jar文件中工作的路径,java,jar,path,Java,Jar,Path,我正在编写代码来播放.wav文件。 所有这些都在我的IDEEclipse中工作,但是当我尝试在jar文件中导出时,声音不会播放!在我看来,这似乎是一个路径问题 这里的代码只扮演相关部分 File audioFile = new File(audioFilePath); AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile); 这里有一些我已经尝试过的解决方案 audioFilePath=(SoundGa

我正在编写代码来播放.wav文件。 所有这些都在我的IDEEclipse中工作,但是当我尝试在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文件中,但不包括声音。 求你了,我不明白如何改变路径。 希望能得到帮助

如果文件在JAR中,则它不是实际的文件,因此它没有路径

您可以改用InputStream。文件只能指向磁盘上的文件,但InputStream可以是您可以读取的任何内容。您甚至可以通过这种方式通过网络连接传输音频

AudioInputStream audioStream = AudioSystem.getAudioInputStream(this.getClass().getClassLoader().getResourceAsStream(mySourcePath));
或者,您可以使用URL。getResource返回URL,而getResourceAsStream返回InputStream。并非所有具有InputStream的资源都有URL,但资源总是有URL

URL resourceURL = this.getClass().getClassLoader().getResource(mySourcePath);
AudioInputStream audioStream = AudioSystem.getAudioInputStream(resourceURL);

没有办法按你的要求去做。JAR文件中的资源不是文件,因此您不能将其用作文件。请注意,可以播放JAR中的WAV文件,但这不是您所要求的方式。请给我发一个JAR中.WAV的工作代码,好吗?使用ClassgetResource/path/to/resource返回URL,然后使用