我有以下代码尝试加载音库。我已经使用 JRE 1.6.03 和 1.6.43 在 Windows 7 上测试了代码。旧版本的 JRE (1.6.03) 工作正常,但新版本会引发异常。这是怎么回事?
public Main() {
try {
Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
BufferedInputStream soundBankStream = new BufferedInputStream(
getClass().getClassLoader().getResourceAsStream(
"soundbank.gm"));
synth.loadAllInstruments(MidiSystem.getSoundbank(soundBankStream));
} catch (MidiUnavailableException e) {
e.printStackTrace();
} catch (InvalidMidiDataException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
.
F:\>java -version
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)
F:\>java -jar Test2.jar
F:\>"C:\Program Files\Java\jre6\bin\java.exe" -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
F:\>"C:\Program Files\Java\jre6\bin\java.exe" -jar Test2.jar
javax.sound.midi.InvalidMidiDataException: cannot get soundbank from stream
at javax.sound.midi.MidiSystem.getSoundbank(Unknown Source)
at com.gulshansingh.test.Main.<init>(Main.java:24)
at com.gulshansingh.test.Main.main(Main.java:14)
您可以从这里下载音库:http://www.oracle.com/technetwork/java/soundbanks-135798.html http://www.oracle.com/technetwork/java/soundbanks-135798.html
复制粘贴自Java 声音 API:声音库 http://www.oracle.com/technetwork/java/soundbanks-135798.html page
Java声音API
此页面提供了不同的音库供您下载和使用
与Java声音。声音库对于正确操作是必要的
与 Java Sound 一起提供的内部软件合成器。默认情况下,
Windows 版本的 J2RE 不附带音库,因此您
需要手动安装一个才能使用Java Sound的MIDI引擎。爪哇
声音有一个后备机制,如果没有,则使用硬件 MIDI 端口
音库可用,但它会妨碍可靠且一致的 MIDI
播放,因此建议 Java 安装音库
声音。
如您所见,Java Sound API 需要安装,因此如果您安装了较新的 JDK,则必须重做安装 http://www.oracle.com/technetwork/java/soundbanks-135798.html#install.
一个错误似乎接近您的问题:4887447 https://bugs.java.com/bugdatabase/view_bug?bug_id=4887447,存在解决方法,但如果banksound位于JAR中则不存在
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)