好的,所以我有这个代码,它在我在Eclipse中播放时工作。但是当我导出它时,它根本不会播放任何声音..我应该如何导出它或我该怎么做才能使它工作?
package sound;
import java.io.InputStream;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class GameSounds
{
public static synchronized void hit()
{
try
{
String resPath = "/sounds/8bit_bomb_explosion.wav"; // *** this is the key ***
InputStream audioInStream = GameSounds.class.getResourceAsStream(resPath);
System.out.println("is audioInStream null?: " + (audioInStream == null)); // test it!
AudioInputStream inputStream = AudioSystem.getAudioInputStream(audioInStream); Clip clip = AudioSystem.getClip();
clip.open(inputStream);
clip.start();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
没有错误..我认为问题是导出..我只是按导出然后我选择可执行的jar文件..一切正常但音频没有..
并且没有抛出异常
通过记录输出你的意思是“是audioInStream null吗?”如果是,则输出为假 而且没有异常抛出
答案 0 :(得分:0)
问题可能是您正在使用InputStream,并且可能会测试它们的可标记性和可重置性。音频文件通常也不支持,因此会触发某种异常。
解决方案是使用URL。然后,您可以在不通过中间InputStream步骤的情况下到达AudioInputStream。
因此,不是构建String,而是构建一个URL并将其作为getResourceAsStream()方法的输入参数。如果查看此方法的规范,您将看到三个重载:File,URL,InputStream。我发现URL工作得最好,因为URL可以指定打包在JAR文件中的资源,并且不会测试标记/重置错误。
答案 1 :(得分:0)
也许你的路径不正确,或者输入流无法正常工作,我不知道有多少次我导出了一个项目而且资源没有正确加载。我建议您使用命令提示符或终端运行jar,无论哪种方式,我认为命令是相同的。
我建议您从cmd / terminal运行它的原因是因为任何可能发生的错误都会出现在cmd / terminal中,然后您可以再开始解决问题了
-java jar PathAndNameOfJar.jar