Mam następujący kod, który próbuje załadować bank dźwiękowy. Przetestowałem kod w systemie Windows 7 z JRE 1.6.03 i 1.6.43. Stara wersja JRE (1.6.03) działa dobrze, ale nowa wersja zgłasza wyjątek. Co się dzieje?Nowsza wersja JRE nie ładuje soundbank, ale starsza wersja ma
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)
Można pobrać soundbanks stąd: http://www.oracle.com/technetwork/java/soundbanks-135798.html
Jestem po prostu ciekawy, czy próbowałeś Java 1.7? – Zyerah
Wyszukaj [błąd DB] (http://bugs.sun.com/). Jeśli nic nie ma, podnieś nowe. –
@Telthien Ten sam błąd w 1.7 – gsingh2011