Java:在JAR中嵌入声音库文件

Java:在JAR中嵌入声音库文件,java,jar,midi,Java,Jar,Midi,如果我有一个存储在JAR中的声音库,我将如何使用资源加载将该声音库加载到我的应用程序中 我正在尝试将尽可能多的MIDI程序整合到jar文件中,最后要添加的是我正在使用的声音库文件,因为用户不会安装声音库。我试图将它放入我的jar文件中,然后在类中使用getResource()加载它,但是我在一个我知道有效的声音库上得到一个InvalidMidiDataException 这是代码,它在合成器对象的构造函数中: try { synth = MidiSystem.getSynthesize

如果我有一个存储在JAR中的声音库,我将如何使用资源加载将该声音库加载到我的应用程序中

我正在尝试将尽可能多的MIDI程序整合到jar文件中,最后要添加的是我正在使用的声音库文件,因为用户不会安装声音库。我试图将它放入我的jar文件中,然后在类中使用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);
 }

这就是我所做的:

synth.loadAllInstruments(
    MidiSystem.getSoundbank(  
        getClass().getResourceAsStream(filePath)));

它对我有用

这就是我所做的:

synth.loadAllInstruments(
    MidiSystem.getSoundbank(  
        getClass().getResourceAsStream(filePath)));
它对我有用