为什么执行AudioSystem.getAudioInputStream时会出现nullpointerException?
Why is there a nullpointerException when execute the AudioSystem.getAudioInputStream?
我确定文件名是正确的!那么AudioSystem.getAudioInputStream
的问题是什么?
public class Main {
public static void main(String[] args) {
public static Clip clip;
AudioInputStream audioStream = null;
try {
//URL soundUrl = Main.class.getResource("D:/eclipse/workplace/AudioTestAPI/2.mp3");
URL soundUrl = Main.class.getResource("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(soundUrl);//42
clip.open(audioStream);
} catch(LineUnavailableException e) {
e.printStackTrace();
} catch(UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch(IOException eo) {
eo.printStackTrace();
}
clip.start();
do {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while(clip.isActive());
}
}
结果:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:221)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1032)
at Main.main(Main.java:42)
出现 java.lang.NullPointerException
是因为您的变量 soundUrl
是 null
。
试试这个:
File file = new File("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(file);
让我知道在我的建议之后发生了什么。
已编辑:
package com.acme.audio;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
public class Main {
public static void main(String[] args) throws LineUnavailableException {
Clip clip = AudioSystem.getClip();
AudioInputStream audioStream = null;
try {
File file = new File("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(file);
clip.open(audioStream);
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch (IOException eo) {
eo.printStackTrace();
}
clip.start();
do {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (clip.isActive());
}
}
我确定文件名是正确的!那么AudioSystem.getAudioInputStream
的问题是什么?
public class Main {
public static void main(String[] args) {
public static Clip clip;
AudioInputStream audioStream = null;
try {
//URL soundUrl = Main.class.getResource("D:/eclipse/workplace/AudioTestAPI/2.mp3");
URL soundUrl = Main.class.getResource("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(soundUrl);//42
clip.open(audioStream);
} catch(LineUnavailableException e) {
e.printStackTrace();
} catch(UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch(IOException eo) {
eo.printStackTrace();
}
clip.start();
do {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while(clip.isActive());
}
}
结果:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:221)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1032)
at Main.main(Main.java:42)
出现 java.lang.NullPointerException
是因为您的变量 soundUrl
是 null
。
试试这个:
File file = new File("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(file);
让我知道在我的建议之后发生了什么。
已编辑:
package com.acme.audio;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
public class Main {
public static void main(String[] args) throws LineUnavailableException {
Clip clip = AudioSystem.getClip();
AudioInputStream audioStream = null;
try {
File file = new File("D:/eclipse/workplace/AudioTestAPI/3.wav");
audioStream = AudioSystem.getAudioInputStream(file);
clip.open(audioStream);
} catch (LineUnavailableException e) {
e.printStackTrace();
} catch (UnsupportedAudioFileException ex) {
ex.printStackTrace();
} catch (IOException eo) {
eo.printStackTrace();
}
clip.start();
do {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (clip.isActive());
}
}