我查看了无数不同的 StackOverflow 答案以及来自其他站点的答案,但没有一个解决方案能解决我的问题。我一辈子都无法播放我的 .wav 文件。
这是我的代码:
声音类:
public class Sound {
/**
* Static file paths for each sound.
*/
public static String stepSound = "/resources/step.wav";
/**
* Audio input stream for this sound.
*/
private AudioInputStream audioInputStream;
/**
* Audio clip for this sound.
*/
private Clip clip;
/* -- Constructor -- */
/**
* Creates a new sound at the specified file path.
*
* @param path File path to sound file
*/
public Sound(String path) {
// Get the audio from the file
try {
// Convert the file path string to a URL
URL sound = getClass().getResource(path);
System.out.println(sound);
// Get audio input stream from the file
audioInputStream = AudioSystem.getAudioInputStream(sound);
// Get clip resource
clip = AudioSystem.getClip();
// Open clip from audio input stream
clip.open(audioInputStream);
} catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {
e.printStackTrace();
}
}
/* -- Method -- */
/**
* Play the sound.
*/
public void play() {
// Stop clip if it's already running
if (clip.isRunning())
stop();
// Rewind clip to beginning
clip.setFramePosition(0);
// Play clip
clip.start();
}
/**
* Stop the sound.
*/
public void stop() {
clip.stop();
}
}
导致错误的构造函数调用:
// Play step sound
new Sound(Sound.stepSound).play();
我知道这不是第一次在这个网站上提出或回答此类问题,但我已经尝试了几个小时的其他解决方案,我发现的只是痛苦和沮丧。如果需要,我可以发布更多代码。提前致谢。
编辑:我已经解压了 .jar 文件并确认该文件确实存在。问题是 URL 最终为空,因此NullPointerException
抛出了 a。
编辑#2:添加更多代码以防出现其他问题。