Lit*_*ild 0 java nullpointerexception javasound embedded-resource
我正在创建一个名为BatteryBeeper的个人用软件.它会提醒我在笔记本电脑充电的时候充电是我设置的提醒.
当电荷达到设定的阈值时,它应该发出声音.
我看了一下答案:声音没有在罐子里播放,我AudioInputStream的构造类似于Jigar Joshi提到的.
但是我得到一个null异常:
java.lang.NullPointerException
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
at demo.BatteryBeeper.main(BatteryBeeper.java:35)
Run Code Online (Sandbox Code Playgroud)
这是加载声音的代码:
public void setupSoundPlayback(){
try{
buzzer = AudioSystem.getClip();
in = AudioSystem.getAudioInputStream(BatteryBeeper.class.
getResourceAsStream("sound/buzzer3_x.wav"));
buzzer.open(in);
}catch(Exception e){
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
以下是播放它的代码:
public void playSound(){
buzzer.start();
}
Run Code Online (Sandbox Code Playgroud)
是什么导致了这个问题?
这是一个常见的Eclipse项目.有一个sound文件夹下面src有波形文件
在AlexR的回答之后,我改变了路径并得到了一个新的例外:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at demo.BatteryBeeper.setupSoundPlayback(BatteryBeeper.java:169)
at demo.BatteryBeeper.<init>(BatteryBeeper.java:41)
at demo.BatteryBeeper.main(BatteryBeeper.java:35)
Run Code Online (Sandbox Code Playgroud)
你的问题不在于播放声音.您的问题是访问嵌入式资源.当您使用时BatteryBeeper.class.getResourceAsStream("sound/buzzer3_x.wav"),尝试检索位于类所在的同一包中的资源BatteryBeeper.这意味着您的文件在/demo/sound/buzzer3_x.wav.看来这是错的.如果您的文件确实在sound/buzzer3_x.wav使用中getResourceAsStream("/sound/buzzer3_x.wav")(请注意路径中的前导斜杠).
| 归档时间: |
|
| 查看次数: |
1444 次 |
| 最近记录: |