AudioClip无法播放,文件路径不正确?

时间:2013-11-25 20:43:15

标签: java audio applet nullpointerexception

我创建了一个快速小小程序来播放音频剪辑,但截至目前,没有骰子。 我不知道为什么,文件的路径是正确的。我究竟做错了什么? 这是代码

import javax.swing.JApplet;
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;

public class PlayAudioClippls extends JApplet {
private URL soundToPlay = getClass().getResource("C:\\Users\\Brian Murphy\\workspace\\FlagsSOUND\\anthem_mid files\\anthem6.mid");
private AudioClip AC = Applet.newAudioClip(soundToPlay);

public void init()
{
AC.play();  
}

}              

这是例外列表

java.lang.NullPointerException
at sun.applet.AppletAudioClip.<init>(Unknown Source)
at java.applet.Applet.newAudioClip(Unknown Source)
at PlayAudioClippls.<init>(PlayAudioClippls.java:10)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

1 个答案:

答案 0 :(得分:0)

  

[...]文件的路径是正确的。我做错了什么?

文件的路径正确,因为您提供了相对于机器文件系统的路径,而Class.getResource() [通常]需要相对于其中一个路径的路径applet的类路径中的目录。您收到NullPointerException,因为由于该问题,您的getResource()来电会返回null

注意:它只是间接地是文件位置的问题。 主要是如何表达它的路径的问题。您可以将文件放在applet的类路径(可能是C:\Users\Brian Murphy\workspace\PlayAudioClippls\bin)上的目录中,也可以放在这样一个目录下的某个子目录中。前者比后者稍微容易一些。在这种情况下,你会想要这个:

private URL soundToPlay = getClass().getResource("/anthem6.mid");

“相对于类路径中的目录”意味着您只指定相关类路径目录后面的路径部分。如果你愿意,这可以包括子目录,这样applet的资源就不必全部出现在它的jar的根目录中。