使用jar文件中资源的音频

时间:2013-09-14 05:13:03

标签: java eclipse audio jar

我设法通过使用一个带有输入流的类从类中获取资源,并将图像和声音添加到eclipse中项目目录中的文件夹并将其添加到构建路径中,从而使资源最终进入jar。

这个图像最终从jar中运行。单击运行时,使用AudioinputStream而不是image.io的相同代码在ide中工作。

但是从jar文件中没有声音。

这是有问题的代码

AudioInputStream audioIntStream = AudioSystem.getAudioInputStream(              
Resourceloader.load("images/engine.wav")); 
Clip clip = AudioSystem.getClip(); 
clip.open(audioIntStream); 
clip.loop(Clip.LOOP_CONTINUOUSLY);

title = ImageIO.read(Resourceloader.load("images/title.png") );

来自同一目录的图像文件同时从ide和jar读取,而如上所述音频文件只在ide中运行而不是jar但jar包含audiofile

1 个答案:

答案 0 :(得分:1)

Java中的资源加载可能很复杂。但是,以下代码段几乎总是您想要的:

Thread.currentThread().getContextClassLoader.getResourceAsStream(
  "path/to/resource/from/jar/root.file");

我经常使用那个片段,我可以在睡梦中输入它。我会调整上面的代码,用它来加载你的资源。但是,如果不能减少它,我会调查以下内容:

  1. 加载后检查资源,如果它们是null,则抛出异常。
  2. 将您的JAR打开为ZIP文件,并确保该资源实际位于您在代码中列出的路径,从JAR的根目录开始。
  3. 使用Ant或Maven构建您的JAR,而不是Eclipse的GUI。这将有助于确保您的JAR始终以相同的方式构建,并减少手动错误的机会。强烈建议使用Maven和标准Maven src/main/resources/目录。