Java audiostream平台独立

时间:2016-06-23 15:32:04

标签: java windows audioinputstream

我有以下播放音频片段的方法:

public static synchronized void playSound(final String path) {
      new Thread(new Runnable() {
      // The wrapper thread is unnecessary, unless it blocks on the
      // Clip finishing; see comments.
        public void run() {
            try {
                Clip clip = AudioSystem.getClip();
                AudioInputStream inputStream = AudioSystem.getAudioInputStream(
                        this.getClass().getClassLoader().getResourceAsStream(path));
                clip.open(inputStream);
                clip.loop(Clip.LOOP_CONTINUOUSLY);
                while (runThread) {
                    Thread.sleep(5000);
                }
                clip.stop();
            }
            catch (Exception e) {
                System.err.println("Audio clip error: "+e.getMessage());
                e.printStackTrace();
            }
        } 
      }).start();
    }

当我在Windows 7桌面平台(Lenovo)上运行时,它按预期工作。但是,当在Windows 7笔记本电脑(Acer)上运行时,我得到以下异常:

java.lang.NullPointerException
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at StokerMonitor.Alerts$1.run(Alerts.java:62)
at java.lang.Thread.run(Unknown Source)

第62行是'AudioInputStream'语句。我不知道两个平台之间的区别是什么,但我猜测笔记本电脑上必须存在一些Windows 7依赖项。有没有人有什么建议? TIA。

1 个答案:

答案 0 :(得分:0)

事实证明,资源目录以某种方式从Eclipse中的构建路径中删除。很抱歉打扰了。