0
我正在嘗試使用javax.sound.sampled
, 啓動音樂到我的程序中,並且我寫了一個名爲music的方法,該方法在執行時應該啓動音樂片段。它是這樣的:當使用clip.open啓動音樂時,Java負數組大小例外
public void playMusic(){
try {
AudioInputStream astream = AudioSystem.getAudioInputStream(
newFileInputStream("bin/ctk_tune.mp3"));
AudioFormat baseFormat = astream.getFormat();
AudioFormat newFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(),
16,
baseFormat.getChannels(),
baseFormat.getChannels() * 2,
baseFormat.getSampleRate(),
false);
AudioInputStream dstream = AudioSystem.getAudioInputStream(
newFormat, astream);
Clip clip = AudioSystem.getClip();
clip.open(dstream);
clip.setFramePosition(0);
clip.start();
} catch(IOException ex) {
System.out.println("music not loaded : ");
ex.printStackTrace();
} catch (UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
當我試圖運行它,我得到了一個未捕獲的異常(該程序沒有啓動)至極說:
Exception in thread "main" java.lang.NegativeArraySizeException
at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:449)
at mainProgram.playMusic(mainProgram.java:211)
at mainProgram.<init>(mainProgram.java:67)
at Launcher.main(Launcher.java:16)
你說得對。用system.out.print();我發現astream.getFormat()和dstream.getFormat()都是-1。但是,我不知道這是爲什麼(我的音樂源代碼是一個有效的音樂曲目)。如果有人知道如何解決這個問題,我會讚賞它。 – nat
繼續調試。如果您使用DEBUGGER **向後**,可以找出導致這些數字爲負數的原因。 –