java程序中写一个背景音乐,已经用了1个线程 还有一个加进去的时候,不知道为什么老是null pointer

publicclassMusicextendsThread{publicvoidrun(){URLurl=getClass().getResource("back1.wa... public class Music extends Thread {

public void run()
{
URL url = getClass().getResource("back1.wav");
AudioClip a = java.applet.Applet.newAudioClip(url);

try{
a.play();

}catch(Exception e){
Sound x = new Sound("back1");
x.a.play();
System.out.println("error in back music");
}
}

}

下面有调用 new Thread(new Music()).start();
import java.applet.AudioClip;
import java.net.URL;

public class Sound {

AudioClip a ;
URL url ;
public Sound(int m){
switch(m){
case 1: url = getClass().getResource("a.wav"); break;
case 2: url = getClass().getResource("back1.wav"); break;
default: break;
}

a = java.applet.Applet.newAudioClip(url);
}

public static void main(String[] args) {
MusicDriver r = new MusicDriver();
Thread t = new Thread(r);
t.start();
Sound s = new Sound(2);
s.a.play();

}

class MusicDriver implements Runnable{

@Override
public void run(){
Sound x = new Sound(1);
x.a.play();
}
}

}
这个也不行。。
展开
 我来答
jiangrujie2005
2011-11-10 · TA获得超过819个赞
知道小有建树答主
回答量:447
采纳率:0%
帮助的人:342万
展开全部
那一行代码有null point异常?是不是你的文件路径问题,你写的是相对路径,播放的音乐文件应该放在这个类相同的目录里边。
更多追问追答
追问
我直接放在了那个classfile的文件夹内
Exception in thread "Thread-4" java.lang.NullPointerException
at sun.applet.AppletAudioClip.(Unknown Source)
at java.applet.Applet.newAudioClip(Unknown Source)
这个不知道为啥 路径问题? 那应该怎么放呢?
追答
a.wav音乐的获取路径改变下。如果你的Sound类和Music类在同一个package下的话,那就把音乐文件也放在这个package目录下就可以了。
你也可以把路径的获取方式改成绝对路径比如:
URL url = getClass().getResource("D:/MUSIC/back1.wav");
相对路径这样写:
URL url = getClass().getResource("/.../back1.wav");开始的/表示当前目录,如果是..开头表示上一层目录。自己把路径好好摸索摸索。。。。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式