我正在尝试播放 .wav 文件,但在使用相对路径函数时遇到了麻烦。
public class Main {
public static void main(String[] args) {
playSound();
}
public static void playSound() {
try {
File file = new File(Main.class.getResource("notification.wav").getFile());
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);
Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();
} catch(Exception ex) {
System.out.println("Error playing sound.");
ex.printStackTrace();
}
}
}
如果我在 IntelliJ 中运行上面的代码,我会收到错误:
java.io.FileNotFoundException: C:\Users\Dominik\Documents\IntelliJ%20Projects\nbbot\out\production\nbbot\com\company\notification.wav (The system cannot find the path specified)
如果我运行我构建的 .jar 应用程序,我会收到以下错误:
java.io.FileNotFoundException: file:\C:\Users\Dominik\Documents\IntelliJ%20Projects\nbbot\nbbot_jar\nbbot.jar!\com\company\notification.wav (The filename, directory name, or volume label syntax is incorrect) in Java?
.wav 文件是 Main 类,我在其中运行截取的代码位于同一文件夹中:
nbbot > src > com > company > Main.java; 通知.wav
这很奇怪,因为路径是正确的,只是读取文件应该没有问题。我也尝试过Main.class.getClass().getResource("notification.wav").getFile();
,.getPath()
但也没有运气。如果我只是使用new File("notification.wav")
并将 .wav 放在项目文件夹nbbot
中,音频会作为意图播放,但只能在 IDE 中播放。