在Eclipse中声音,但在可运行的JAR文件中没有声音

时间:2015-08-20 07:08:05

标签: java eclipse jar

当我在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);

2 个答案:

答案 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)

  1. 在项目中创建“文件夹源”。右键单击您的项目,然后找到类似的文件夹。

  2. 通过拖动将wav文件放入文件夹源。但是直接在您的IDE中。

  3. 编译项目并保存。

现在,当您打开工作IDE文件夹(保存文件夹)时,您的wav文件应该位于源文件夹和bin文件夹中,而不是其他位置。不要将文件放到bin文件夹中。在您运行程序时将自动添加。

注意:将这样的wav文件调用到Java项目中:“ wav file.wav的名称”;

不需要文件路径。

保存可执行的jar文件后,请尝试从源代码删除wav文件。检查它是否可以那样工作。应该有可能使其在其他设备上正常工作...

编辑:声音可能无法在IDE中工作,但是会保存为jar文件...要在您的IDE中工作,请复制工作区文件夹中的wav文件,但要导出时将其删除... < / p>

我使用的是Eclipse,要使其正常工作是很棘手的,但是一旦完成就可以了。取决于哪个库使用它...