做java小游戏添加音乐用getResourceAsStream()读取音乐文件时返回值为null

目录

一、错误代码展示

       1.代码架构

       2.Ajava代码

二、IDEA报错显示

三、错误的原因

   1.路径错误

    2.IDEA Source资源目录没有设置

   (1)设置资源目录的前后对比

   (2)设置资源目录的方法


一、错误代码展示

       1.代码架构

       2.Ajava代码

public class Ajava {
    public static void main(String[] args) throws Exception {
        Ajava a = new Ajava();
        Clip clip = AudioSystem.getClip();
        ClassLoader cl = a.getClass().getClassLoader();//得到类加载器
        InputStream in = cl.getResourceAsStream("bgm.wav");//加载音乐
        System.out.println(cl);
        System.out.println(in);
        AudioInputStream ais = AudioSystem.getAudioInputStream(in);

        clip.open(ais);//打开这个文件
        while (true)
clip.loop(Clip.LOOP_CONTINUOUSLY);//播放音乐需要用while()来一直播放
    }
}

二、IDEA报错显示

Exception in thread "main" java.lang.NullPointerException
	at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:134)
	at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113)
	at main.java.Ajava.main(Ajava.java:21)

从第一行可以看到错误类型为空指针异常。

三、错误的原因

   1.路径错误

getResourceAsStream()里填写的相对路径错误,其实这个原因大部分人都不会犯,因为大部分都是看着视频做的游戏,不太可能把相对路径填错。

    2.IDEA Source资源目录没有设置

         (1)设置资源目录的前后对比

如果没有把你将要播放音乐的所在目录设置成资源根目录

如下图

 将resource设置成资源根目录后

   (2)设置资源目录的方法

IDEA设置资源根目录·

设置好之后就能正常播放音乐了。

如果有哥们遇到的问题一样并且用这种方法解决了那还请兄弟给我点个赞,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值