2014-02-22 39 views
0

我有這個類播放聲音,但每次我嘗試使用它,我得到一個空指針異常。這是我如何使用它:如何播放聲音而不是獲得例外?

import javax.sound.sampled.*; 

public class Sound { 

public Clip play(String filename) { 
    Clip clip = null; 

    try { 
     AudioInputStream audioIn = AudioSystem.getAudioInputStream(getClass().getResource(filename)); 
     clip = AudioSystem.getClip(); 
     clip.open(audioIn); 
     clip.start(); 
    } catch (Exception e) { e.printStackTrace(); } 

    return clip; 
    } 

} 

public Sound sound; 
sound.play("PathToFile"); 
+1

這將幫助人們回答你的問題,如果你添加你得到的異常的堆棧跟蹤(特別是哪一行代碼拋出'NullPointerException')。 – ylabidi

回答

0

嘗試:

File file = new File(filename); 
this.getClass().getClassLoader().getResource(file.getPath()); 
+0

嘗試,但仍然得到這一點:在COM顯示java.lang.NullPointerException \t在com.sun.media.sound.StandardMidiFileReader.getSequence(來源不明) \t在javax.sound.midi.MidiSystem.getSequence(來源不明) \t .sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(未知來源) \t在javax.sound.sampled.AudioSystem.getAudioInputStream(未知來源) \t在net.delta.pixeluniverse.Sound.play(Sound.java:11)​​ \t at net.delta.pixeluniverse.Menu。 (Menu.java:56) \t at net.delta.pixeluniverse.Component.main(Component.java:213) – StarBreakerGames

+0

嘗試添加「getPath()」並仔細檢查文件的值是否有任何錯字。 – ltalhouarne

+0

它說:「方法getPath()未定義類型字符串」 – StarBreakerGames

0

你初始化變量的聲音?你應該這樣做:

Sound sound = new Sound(); //Notice the 'new' keyword here 
sound.play("PathToFile");