Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java音频流独立于平台_Java_Windows_Audioinputstream - Fatal编程技术网

Java音频流独立于平台

Java音频流独立于平台,java,windows,audioinputstream,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() {

我使用以下方法播放音频剪辑:

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();
    }
当我在Windows7桌面平台(联想)上运行这个程序时,它的工作原理与预期一样。但是,在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”语句。我不知道这两个平台之间有什么区别,但我猜笔记本电脑上肯定缺少一些Windows7依赖项。有人有什么建议吗?TIA.

事实证明,在Eclipse中,不知何故,资源目录已从构建路径中删除。很抱歉打扰您。

事实证明,在Eclipse中,不知何故,资源目录已从构建路径中删除。抱歉打扰您。

此.getClass().getClassLoader().getResourceAsStream(路径)
返回空值。验证.jar是否确实包含与该路径匹配的条目。请注意,getResourceAsStream不使用文件名作为参数,而是使用相对URL(没有方案或权限),在所有平台上都必须使用正斜杠(
/
)作为目录分隔符。在两个平台上都是相同的jar。名为“path”的变量用词不当。它只是一个.wav文件名。
path
的值是多少?它有所不同,但我用来测试的是“alarm.wav”。添加一个print语句以验证
this.getClass().getClassLoader().getResourceAsStream(path)
是否返回非空值。并在每台机器上仔细检查.jar文件的大小(以字节为单位)。
this.getClass().getClassLoader().getResourceAsStream(path)
返回null。验证.jar是否确实包含与该路径匹配的条目。请注意,getResourceAsStream不使用文件名作为参数,而是使用相对URL(没有方案或权限),在所有平台上都必须使用正斜杠(
/
)作为目录分隔符。在两个平台上都是相同的jar。名为“path”的变量用词不当。它只是一个.wav文件名。
path
的值是多少?它有所不同,但我用来测试的是“alarm.wav”。添加一个print语句以验证
this.getClass().getClassLoader().getResourceAsStream(path)
是否返回非空值。并在每台机器上仔细检查.jar文件的大小(以字节为单位)。