2013-05-17 160 views
1

我试图通过JMF库为一个学校项目创建一个简单的MP3播放器,但我总是有这个错误。该文件的路径是正确的。JMF音乐播放器

java.lang.NullPointerException 
     at javax.media.MediaLocator.<init>(MediaLocator.java:37) 
     at Mp3Player.run(Mp3Player.java:40) 

这里是我的代码:

import java.net.URL; 
import javax.media.ControllerEvent; 
import javax.media.ControllerListener; 
import javax.media.EndOfMediaEvent; 
import javax.media.Manager; 
import javax.media.MediaLocator; 
import javax.media.Player; 


public class Mp3Player extends Thread { 

    private String filename; 
    Player player; 

    public Mp3Player(String mp3Filename) { 
     this.filename = mp3Filename; 
    } 

    public void run() { 
     try { 
     URL url = this.getClass().getClassLoader().getResource(filename); 
     MediaLocator locator = new MediaLocator(url); 
     player = Manager.createPlayer(locator); 
     player.addControllerListener(new ControllerListener() { 
      public void controllerUpdate(ControllerEvent event) { 
       if (event instanceof EndOfMediaEvent) { 
        player.stop(); 
        player.close(); 
       } 
      } 
     }); 
     player.realize(); 
     player.start(); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     new Mp3Player("C:\\Users\\Aziz\\Music\\music\\a.mp3").start(); 
    } 
} 

回答

0

此字符串URL url = this.getClass().getClassLoader().getResource(filename);似乎可疑。 尝试在java.io.*使用File类,有方法toURL()

File f = new File (filename); 
MediaLocator locator = new MediaLocator (f.toURL()); 
player = Manager.createPlayer (locator);