Tôi có mã sau đây cố tải một soundbank. Tôi đã thử nghiệm mã trên Windows 7 với JRE 1.6.03 và 1.6.43. Phiên bản cũ của JRE (1.6.03) hoạt động tốt nhưng phiên bản mới ném một ngoại lệ. Chuyện gì vậy?Phiên bản mới hơn của JRE không tải soundbank nhưng phiên bản cũ hơn
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)
Bạn có thể tải soundbanks từ đây: http://www.oracle.com/technetwork/java/soundbanks-135798.html
Tôi chỉ tò mò, bạn đã thử Java 1.7 chưa? – Zyerah
Tìm kiếm [lỗi DB] (http://bugs.sun.com/). Nếu không có gì, hãy nâng cấp cái mới. –
@Telthien Lỗi tương tự trong 1.7 – gsingh2011