所以这个班级播放声音文件' Theme A.wav'当它独自运行时就好了。
这是PlayAudio.class'
proc freq; tables a*b; run;
但是,在主类中找到的播放按钮在单击时无法调用“playaudio.class”。在我添加音频代码之前它工作正常(除了' System.out.println之外的所有内容("加载的playaudio.class;播放音频");' line)。错误没有出现,直到"抛出异常"片段被添加到第一堂课。
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();
}
}
有任何帮助吗? 这是编译器抛出的异常。
//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();
}
});
答案 0 :(得分:1)
在playaudio.main(null)或主要内部(而不是抛出)放置一个Try / Catch。
playaudio.main()调用将进入动作事件监听器,可能会被静默吃掉。无声的异常绝对是Java代码中最糟糕的事情。
我的猜测是因为它无法再找到文件而丢弃(可能是“。”目录移动了,因为你的启动方式不同或使用不同的主目录)
如果是这种情况,“修复”的一种方法是提供完整路径。
如果您发现异常,请将其添加到您的帖子中,我们可以提供进一步帮助。
知道了。这是一个构建错误。当您从主程序中“抛出”异常时,您不会在调用主程序的方法中处理它。
与我上面给出的解决方案相同。在try / catch中包含对main的调用:
try {
playaudio.main(null);
} catch(Exception e) {
System.out.println("Caught an exception:"+ e.getMessage());
e.printStackTrace();
}