我设法通过使用一个带有输入流的类从类中获取资源,并将图像和声音添加到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
答案 0 :(得分:1)
Java中的资源加载可能很复杂。但是,以下代码段几乎总是您想要的:
Thread.currentThread().getContextClassLoader.getResourceAsStream(
"path/to/resource/from/jar/root.file");
我经常使用那个片段,我可以在睡梦中输入它。我会调整上面的代码,用它来加载你的资源。但是,如果不能减少它,我会调查以下内容:
null
,则抛出异常。src/main/resources/
目录。