2013-11-25 42 views
0

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

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

'getReseource'只适用于applet的运行时类路径。 'C:'驱动器不在该类路径上。为了更好地帮助提供HTML和class/Jar文件的位置以及HTML。为代码块使用一致的逻辑缩进。代码的缩进旨在帮助人们理解程序流程。 –

+0

嘿安德鲁,谢谢你的回应,所以我把MIDI文件放到源文件夹(“getClass()。getResource(”anthem6.mid“);”),而且还是一无所有......你还喜欢班级/ jar文件? –

+0

[编辑](http://stackoverflow.com/posts/20202897/edit)**全部**我向问题请求的信息。这是*“为了更好地帮助提供HTML和class/Jar文件的位置以及HTML(用于加载小程序)。”* –

回答

0

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

到该文件的路径是正确的,因为你给相对于计算机的文件系统路径,而Class.getResource() [普通]想相对于小程序的类路径的一个目录的路径。您收到NullPointerException,因为您的getResource()致电由于该问题返回null

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

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

“相对于在类路径中的目录”是指你指定下面的相关类路径的目录路径的唯一部分。如果你喜欢,可以包含子目录,这样applet的资源就不必全部出现在它的jar的根目录下。