gpt4 book ai didi

java - Java 播放声音时出现 NullPointer

转载 作者:行者123 更新时间:2023-12-01 19:03:58 26 4
gpt4 key购买 nike

我在尝试播放声音时遇到错误。由于某种原因,我收到了空指针异常。我正在使用的位置和文件都存在,并且在输出文件字符串时,我确实获得了文件的正确路径。空指针位于 .open 行上。我做错了什么?

package main;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

public class Sound {
Clip background;

public void init() {

try {
String file = new File("").getAbsolutePath() + "\\Sounds\\Pacman_Opening.wav";
System.out.println(file);
background = AudioSystem.getClip();
background.open(AudioSystem.getAudioInputStream(getClass().getResource(file)));
} catch (LineUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void playBG() {
background.start();
}
public void stopBG() {
background.stop();
}
public static void main(String[] args) {
Sound s = new Sound();
s.init();
s.playBG();
}

}

这是错误(第一行是位置):

Exception in thread "main" java.lang.NullPointerException
at com.sun.media.sound.WaveFileReader.getAudioInputStream(Unknown Source)
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at main.Sound.init(Sound.java:21)
at main.Sound.main(Sound.java:42)

最佳答案

Class.getResource() 不采用文件名 - 它采用资源名称。

为什么不直接创建一个 File 并将其传递给 getAudioInputStream

// TODO: Avoid backslashes in file constructor calls; there are other ways
// of creating relative paths
File file = new File("Sounds\\Pacman_Opening.wav");
...
background.open(AudioSystem.getAudioInputStream(file));

关于java - Java 播放声音时出现 NullPointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11001114/

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