代码如下:package ex18;
import javax.swing.*;
import java.net.URL;
import java.applet.*;public class DisplayImagePlayAudio extends JApplet{
private AudioClip audioClip;

public DisplayImagePlayAudio(){
URL urlForImage = getClass().getResource("E:/学习资料/book/image/den.gif");
add(new JLabel(new ImageIcon(urlForImage)));

URL urlForAudio = getClass().getResource("E:/学习资料/book/audio/den.mid");
audioClip = Applet.newAudioClip(urlForAudio);
audioClip.loop();
}

public void start(){
if(audioClip != null)  audioClip.loop();
}

public void stop(){
if(audioClip != null)  audioClip.stop();
}
}
我输入的路径没有错,但是每次运行都有NullPointerException

解决方案 »

  1.   

    在applet中要访问本地资源要签名授权的。
      

  2.   

    内容太多,打字太累,给你一个博客地址吧
    http://www.blogjava.net/nokiaguy/archive/2009/02/06/253636.html
      

  3.   

    谢谢!  不过在最后一步就运行本地的html就死机,而且报错另外,如果我只是想在普通的java程序里放音乐用AudioClip类也不行,即使路径对了,还是会有NullPointerException
      

  4.   

    前面没怎么细看。你的这个代码有以下几个问题:
    1)getResource中传入的参数应该是相对路径,所以你这里取不到该文件的url路径,返回的就是null,你可以再程序中打印出来;可改为new File("F:/电子资料/onestop.mid").toURI().toURL();
    2)jar文件数字签名。Applet中访问权限受限资源应该放在方法AccessController.doPrivileged中去执行(该方法说明详见api文档),否则要修改本地policy文件;
    3)AudioClip是一个接口,Applet实现了它,你改成本地Application得调用一个实现它的组件。
    详细的你都可以再网上搜资料了。