如果我有一个存储在JAR中的音库,我如何使用资源加载将该音库加载到我的应用程序中??
我正在努力将尽可能多的MIDI程序整合到jar文件中,我要添加的最后一件事是我正在使用的音库文件,因为用户不会安装音库。我试图将它放入我的jar文件中,然后在Class类中使用getResource()加载它,但是我在声音库中得到一个InvalidMidiDataException,我知道它是有效的。
这是代码,它在我的合成器对象的构造函数中:
try {
synth = MidiSystem.getSynthesizer();
channels = synth.getChannels();
instrument = MidiSystem.getSoundbank(this.getClass().getResource("img/soundbank-mid.gm")).getInstruments();
currentInstrument = instrument[0];
synth.loadInstrument(currentInstrument);
synth.open();
} catch (InvalidMidiDataException ex) {
System.out.println("FAIL");
instrument = synth.getAvailableInstruments();
currentInstrument = instrument[0];
synth.loadInstrument(currentInstrument);
try {
synth.open();
} catch (MidiUnavailableException ex1) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex1);
}
} catch (IOException ex) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex);
} catch (MidiUnavailableException ex) {
Logger.getLogger(MIDISynth.class.getName()).log(Level.SEVERE, null, ex);
}
答案 0 :(得分:1)
这就是我所做的:
synth.loadAllInstruments(
MidiSystem.getSoundbank(
getClass().getResourceAsStream(filePath)));
它对我有用。