2010-10-27 72 views
0

我可以播放MIDI文件,其中「文件名」是帶有「asd.mid」值的字符串類型。但是,我試圖將AIR的nativeprocess命令發送給Java,它顯示「無法讀取」錯誤。怎麼來的?使用無法發送MIDI文件名到Java播放音樂

private void playMidi() { 
    if(isPlaying.equals("0")) { 
     try { 
      song = MidiSystem.getSequence(new File(filename)); 
      sequencer = MidiSystem.getSequencer(); 
      sequencer.setSequence(song); 
      sequencer.open(); 
      sequencer.addMetaEventListener(this); 
      sequencer.start(); 
     } catch (InvalidMidiDataException e) { 
      System.out.println("Bad midi file: "+ filename); 
      System.exit(1); 
     } catch (MidiUnavailableException e) {System.out.println("No sequencer available"); 
      System.exit(1); 
     } catch (IOException e) {System.out.println("Could not read: "+ filename); 
      System.exit(1); 
     } 
     displayMidiInfo(filename); 
     } else { 
     updateTempoFactor(speed); 
     } 
    } 

回答

0

是一個相對路徑,另一個是絕對的:

的Java?除非兩個應用程序都坐在同一個文件夾中,否則我會想象你需要文件路徑而不僅僅是文件名。

+0

我想MIDI不接受絕對路徑?它只支持URL,File和InputStream。 – Proyb2 2010-10-27 13:10:59

+0

這將是造成IOExcpetion的文件構造,因爲它無法找到指定的文件,它需要的絕對路徑......我猜...因爲你的異常處理已經基本上消除了任何有用的信息。 – 2010-10-27 13:29:42