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();
}
}
}
这个也不行。。 展开
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();
}
}
}
这个也不行。。 展开
1个回答
展开全部
那一行代码有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");开始的/表示当前目录,如果是..开头表示上一层目录。自己把路径好好摸索摸索。。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询