快速建站学什么,企业解决方案规划,seo综合查询站长工具怎么用,大连开发区人才网1 问题描述通过源码运行时#xff0c;一般使用如下方式读取资源文件#xff1a;String str 1.jpg;资源文件与源码文件放在同一目录下#xff0c;或者拥有同一父级目录#xff1a;String str a/b/1.jpg;这样直接编译运行没有问题#xff0c;但是…1 问题描述通过源码运行时一般使用如下方式读取资源文件String str 1.jpg;资源文件与源码文件放在同一目录下或者拥有同一父级目录String str a/b/1.jpg;这样直接编译运行没有问题但是打成JAR包后会读取不了直接抛空指针异常。2 解决办法使用URL或者InputStream进行读取URL url getClass().getClassLoader().getResource(a/b/1.jpg);InputStream inputStream getClass().getClassLoader().getResourceAsStream(a/b/1.png);注意不能在路径前加/URL url getClass().getClassLoader().getResource(/a/b/1.jpg);InputStream inputStream getClass().getClassLoader().getResourceAsStream(/a/b/1.png);这样读取出来是null。getClass().getClassLoader().getResource()从源码运行的URL如下从JAR包运行的URL如下测试系统Win10从源码运行的话有一个file:前缀而从JAR包运行有一个jar:file:前缀。前缀一般没有影响一般都能直接通过URL获取文件比如在Swing的JFrame中设置图标mainFrame.setIconImage(new ImageIcon(getClass().getClassLoader().getResource(image/icon.png)).getImage());如果只能通过String处理路径需要把前缀file:或者jar:file:去掉JAR的话可以结合JarFile类读取文件。