我有一个简单的程序,在运行时会发出声音。
码:

public static void main(String[] args) {
     try {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(Main.class.getResource("ProgramAudio\\chechen.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
}
错误:
java.lang.NullPointerException
at java.base/java.util.Objects.requireNonNull(Objects.java:222)
at java.desktop/javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1032)
at aChatProgramAudio.audio2.main(audio2.java:13)
给定目录可能与此有关,但确实存在。

最佳答案

一些尝试的可能性。
在此文件中,将chechen.wavMain.java放在同一软件包文件夹中。

URL url = Main.class.getResource("chechen.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
如果您的包文件夹结构类似于以下内容(其中ProgramAudiosrc下的包):
src/yourProgramCodePackage/Main.java
src/ProgramAudio/chechen.wav
然后,应使用“绝对”寻址进行以下操作。
URL url = Main.class.getResource("/ProgramAudio/chechen.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
如果您具有以下文件夹结构,其中ProgramAudio是其中包含Main.java的代码包的子文件夹,则应使用“相对”寻址形式。
src/yourProgramCodePackage/Main.java
src/yourProgramCodePackage/ProgramAudio/chechen.wav

URL url = Main.class.getResource("ProgramAudio/chechen.wav");
AudioInputStream ais = AudioSystem.getAudioInputStream(url);
遵循包名称约定并使用小写或驼色小写字母可能是个好主意,例如,如果programAudio用作包名称,则使用小写或驼峰。

09-05 20:16