当我在Eclipse中运行应用程序时,声音播放效果很好,但是如果我将应用程序导出到可运行的jar,则声音无法正常工作。
我在互联网上搜索了很多,他们都使用getResourceAsStream
,但我没有找到FileInputStream
的解决方案。
在jar文件中,progress_bar.wav位于根目录,但即使soundFile = "progress_bar.wav"
也无法正常工作。
SRC
--controller
----FileManager.java
--res
---- progress_bar.wav
public void display_L11_errors(final JProgressBar pBar, String... args) throws IOException
{
String soundFile = "res/progress_bar.wav";
InputStream in;
AudioStream audioStream = null;
try {
in = new FileInputStream(soundFile);
audioStream = new AudioStream(in);
AudioPlayer.player.start(audioStream);
} catch (IOException e1) { e1.printStackTrace(); }
//for loop
AudioPlayer.player.stop(audioStream);
}
任何人请给我一个答案?
修改 正如@ greg-449告诉我的那样,Jar中的条目不是文件,所以你不能使用FileInputStream来访问它们。
解决方案:
AudioStream audioStream = null;
audioStream = new AudioStream(FileManager.class.getResourceAsStream ("/progress_bar.wav"));
AudioPlayer.player.start(audioStream);
//for loop
AudioPlayer.player.stop(audioStream);
答案 0 :(得分:1)
创建一个单独的文件夹,除了你的" src"文件夹,例如" res",并将文件保存在那里,并使用网址引用您的文件:
URL url = <NameOfClass>.class.getResource("/progress_bar.wav");
然后通过右键单击项目&gt;配置构建路径。构建路径&gt;配置构建路径&gt;来源&gt;添加文件夹&gt;检查&#34; res&#34;,按好,再按好,然后再次尝试导出项目。
变化
in = new FileInputStream(soundFile);
到
in = new FileInputStream(url);
答案 1 :(得分:0)
在项目中创建“文件夹源”。右键单击您的项目,然后找到类似的文件夹。
通过拖动将wav文件放入文件夹源。但是直接在您的IDE中。
编译项目并保存。
现在,当您打开工作IDE文件夹(保存文件夹)时,您的wav文件应该位于源文件夹和bin文件夹中,而不是其他位置。不要将文件放到bin文件夹中。在您运行程序时将自动添加。
注意:将这样的wav文件调用到Java项目中:“ wav file.wav的名称”;
不需要文件路径。
保存可执行的jar文件后,请尝试从源代码删除wav文件。检查它是否可以那样工作。应该有可能使其在其他设备上正常工作...
编辑:声音可能无法在IDE中工作,但是会保存为jar文件...要在您的IDE中工作,请复制工作区文件夹中的wav文件,但要导出时将其删除... < / p>
我使用的是Eclipse,要使其正常工作是很棘手的,但是一旦完成就可以了。取决于哪个库使用它...