Tia*_*goM 3 java resources wav javasound embedded-resource
我想我的代码是好的,我的.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)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?非常感谢!!
Java Sound需要为某些操作重新定位(标记/重置支持)输入流.如果你遇到这个问题,那是因为流不可重新定位.
绕过它的一种方法是将byte[]原始流放入a ByteArrayInputStream,它支持标记/重置.
关于Eric R.链接的问题的第二个答案也是可能的,看起来更简单.试试看,改变..
InputStream is = this.getClass().getClassLoader().getResourceAsStream("beep.wav");
inputStream = AudioSystem.getAudioInputStream(is);
Run Code Online (Sandbox Code Playgroud)
至:
URL url = this.getClass().getClassLoader().getResource("beep.wav");
inputStream = AudioSystem.getAudioInputStream(url);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4094 次 |
| 最近记录: |