gpt4 book ai didi

Java 音频单独运行时可以正常播放,但通过单独的类运行时则不然

转载 作者:行者123 更新时间:2023-12-01 11:36:29 25 4
gpt4 key购买 nike

所以这个类在单独运行时可以很好地播放声音文件“Theme A.wav”。

这是“PlayAudio.class”

import java.io.*;
import sun.audio.*;

public class PlayAudio {

public static playsound() {

String sound = "Theme A.wav";

InputStream audio = new FileInputStream(new File(sound));
AudioStream aStream = new AudioStream(audio);
AudioPlayer.player.start(aStream);

System.out.println("Loaded playaudio.class; playing audio");


}
public static void main(String args[]) {

new playsound();

}
}

但是,在主类中找到的播放按钮在单击时无法调用“playaudio.class”。在我添加音频代码之前它工作得很好(除了'System.out.println(“Loaded playaudio.class;playing audio”);'行之外的所有内容)。直到将“抛出异常”代码段添加到第一个类中后,错误才显示。

//play button
play = new JButton(new ImageIcon ("UIImages/play.png"));
play.setBackground(Color.WHITE);
play.setFocusPainted(false);

//sets up the action play
play.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {

PlayAudio.playsound();

}
});

有什么帮助吗?这是编译器抛出的异常。

1 error found:
File: C:\Users\Hunter\workspace\src\rejomedia.java [line: 74]
Error: Unhandled exception type java.lang.Exception

最佳答案

在 playaudio.main(null) 周围或 main 内部放置一个 Try/Catch(而不是抛出)。

playaudio.main() 调用将扔进 Action 事件监听器中,并且可能会默默地被吃掉。无声异常绝对是 Java 代码中最糟糕的事情。

我的猜测是它被丢弃,因为它再也找不到该文件(可能是“.”目录被移动,因为您以不同的方式启动它或使用不同的主目录)

如果是这种情况,“修复”它的一种方法是提供完整路径。

如果您发现异常情况,请将其添加到您的帖子中,我们可以提供进一步帮助。

明白了。这是一个构建错误。当您从主程序“抛出”异常时,您并没有在调用主程序的方法中处理它。

与我上面给出的解决方案相同。将对 main 的调用包装在 try/catch 中:

try {
playaudio.main(null);
} catch(Exception e) {
System.out.println("Caught an exception:"+ e.getMessage());
e.printStackTrace();
}

关于Java 音频单独运行时可以正常播放,但通过单独的类运行时则不然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29930766/

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