gpt4 book ai didi

java - 无法播放 jar 文件中的嵌入声音

转载 作者:行者123 更新时间:2023-12-01 17:26:40 25 4
gpt4 key购买 nike

我正在创建一个名为 BatteryBeeper 的个人使用软件。当充电达到我设置的提醒时,它会提醒我给笔记本电脑充电。

当电量达到设定阈值时,它应该会播放声音。

我看了答案:sound not playing in jar我的 AudioInputStream 的构造与 Jigar Joshi 提到的类似。

但是我得到一个空异常:

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)

这是我加载声音的代码:

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();
}

}

这是播放它的代码:

public void playSound(){
buzzer.start();
}

是什么导致了这个问题?

其他

这是一个普通的 Eclipse 项目。 src下有一个sound文件夹,里面有wave文件

编辑

在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)

最佳答案

您的问题不在于播放声音。您的问题在于访问嵌入式资源。当您使用 BatteryBeeper.class.getResourceAsStream("sound/buzzer3_x.wav") 时,您会尝试检索位于 BatteryBeeper 类所在的同一包中的资源。这意味着您的文件位于 /demo/sound/buzzer3_x.wav 中。看来这是错误的。如果您的文件确实位于 sound/buzzer3_x.wav 中,请使用 getResourceAsStream("/sound/buzzer3_x.wav") (注意路径中的前导斜杠)。

关于java - 无法播放 jar 文件中的嵌入声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14375338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com