2013-11-25 44 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的根目錄下。