我想我的代码没问题,我的 .jar 文件里面的 .wav 没问题。
但是当我尝试使用 getResourceAsStream 加载它时,出现错误。
这是我的错误:
java.io.IOException: mark/reset not supported
at java.util.zip.InflaterInputStream.reset(Unknown Source)
at java.io.FilterInputStream.reset(Unknown Source)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unkno
wn Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at operation.MainWindowOperations.prepareAudio(MainWindowOperations.java
:92)
at operation.MainWindowOperations.<init>(MainWindowOperations.java:81)
at graphics.LaunchGraphics.<init>(LaunchGraphics.java:25)
at run.RunApp.main(RunApp.java:14)
这是我的代码:
private void prepareAudio() {
try {
InputStream is = this.getClass().getClassLoader().getResourceAsStream("beep.wav");
inputStream = AudioSystem.getAudioInputStream(is);
clip = AudioSystem.getClip();
clip.open(inputStream);
} catch (Exception ex) {
ex.printStackTrace();
}
}
有人能帮我吗?非常感谢!
Java Sound 需要可重新定位(支持标记/重置)输入流来执行某些操作。如果您遇到此问题,那是因为流不可重新定位。
解决这个问题的一种方法是将byte[]
将原始流转化为ByteArrayInputStream
,支持标记/重置。
Eric R. 链接的问题的第二个答案也是可能的,而且看起来更简单。要尝试一下,改变..
InputStream is = this.getClass().getClassLoader().getResourceAsStream("beep.wav");
inputStream = AudioSystem.getAudioInputStream(is);
To:
URL url = this.getClass().getClassLoader().getResource("beep.wav");
inputStream = AudioSystem.getAudioInputStream(url);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)