Maven项目测试阶段与jar包获取的根目录完全不一样

问题背景:我想加载resources目录下的一张图片,在idea的调试阶段成功了,但package后运行jar包就出现了各种错误

 

我在Main方法中通过class.getResource("/").getPath(); 在idea的调试阶段可以正确获取,但我package后通过控制台运行jar包就会报空指针异常,下面是Main方法的部分代码

public static void main(String[] args) {
        String path = Main.class.getResource("/").getPath();
    }

下面两张是对比图

控制台jar包运行图

idea调试信息

 

 

后来我通过

URL resource = Main.class.getClassLoader().getResource("Lock.png");
String path = resource.getPath();

这种方法也是在调试阶段成功获取到了resources目录下的Lock.png图片,但package后获取到的path就变成了

file:/D:/self_project/EyeCare/EyeCare-1.0.jar !/Lock.png

下面是这种方法对应的测试图

 

 

我想知道如何在一个JavaSE的maven项目中去获取资源文件,并且在打包后也能正常运行

 

顺提一下,如果大家知道Log4j的Log4j.properties文件内部是怎么获取的啊,Log4j在我的这个程序中就很正常的运行了

InputStream resourceAsStream = a.class.getClassLoader().getResourceAsStream("");

用流去获取文件