Java—为什么可以';我不能播放任何声音吗?

Java—为什么可以';我不能播放任何声音吗?,java,audio,Java,Audio,我正在尝试将声音加载到游戏中,但在看了半打不同的YouTube教程后,它就不起作用了 这是我最后一次尝试: public static Mixer mixer; public static Mixer.Info[] info; public static DataLine.Info dataline; public static AudioInputStream stream; public static Clip title; public static Clip click; p

我正在尝试将声音加载到游戏中,但在看了半打不同的YouTube教程后,它就不起作用了

这是我最后一次尝试:

    public static Mixer mixer;
public static Mixer.Info[] info;
public static DataLine.Info dataline;
public static AudioInputStream stream;

public static Clip title;
public static Clip click;

public static void init()
{
    info = AudioSystem.getMixerInfo();
    mixer = AudioSystem.getMixer(info[0]);
    dataline = new DataLine.Info(Clip.class, null);

    title = load("/music/title");

    click = load("/effects/click");
}

public static void play(Clip clip)
{
    clip.start();
}

public static void stop(Clip clip)
{
    clip.stop();
}

public static Clip load(String path)
{
    Clip clip = null;

    try
    {
        clip = (Clip) mixer.getLine(dataline);
        URL file = Sounds.class.getResource("/assets/sounds/effects/" + path + ".wav");
        stream = AudioSystem.getAudioInputStream(file);
        clip.open(stream);
    }
    catch (LineUnavailableException | UnsupportedAudioFileException | IOException e)
    {
        e.printStackTrace();
    }

    return clip;
}
加载声音时,我会遇到以下错误:

Exception in thread "Thread-2" java.lang.NullPointerException
at com.sun.media.sound.StandardMidiFileReader.getSequence(StandardMidiFileReader.java:207)
at javax.sound.midi.MidiSystem.getSequence(MidiSystem.java:841)
at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:178)
at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1147)
at data.resources.Sounds.load(Sounds.java:54)
at data.resources.Sounds.init(Sounds.java:31)
at data.Game.init(Game.java:60)
at data.Game.run(Game.java:69)
at java.lang.Thread.run(Thread.java:745)
这些文件位于: res/assets/sounds/effects/clip.wav res/assets/sounds/music/title.wav

我试过: /资源/资产/。。。 资源/资产/。。。 /资产/。。。 资产/

我试过: .wav .mp3 .ogg .wma .m4a

而且它们的组合都不起作用。这些文件没有损坏。它们在VLC、Windows Media Player以及用它们替换Minecraft的音乐文件(如.ogg)时都能播放得非常好。因此,它们在Java和普通玩家中都可以识别和播放


我不明白我做错了什么。

在您指定的路径上根本没有资源。您确定1)文件在类路径上;2) 您正在传递正确的路径,例如,您是否在参数
路径中提供了“.wav”
?顺便说一句,您可以(/应该)从问题中删除除1行(或者可能2行)之外的所有代码:您只需要调用
getResource
的代码,也可能需要调用
AudioSystem.getAudioInputStream
的代码。其他一切看起来都无关紧要,因为这只是没有指定正确的资源路径的问题。