与getClassLoader()方法有关的问题:为什么下面的代码中会发生空指针异常

import java.io.IOException;
import java.util.Properties;

public class PropertyUtil {
    public static void main(String[] args) {
        Properties properties = new Properties();
        try {
            properties.load(PropertyUtil.class.getClassLoader().getResourceAsStream("LYZ.properties"));
            String username = properties.getProperty("username");

            System.out.println(username);
        } catch (IOException e) {
            System.out.println("无法读取LYZ.properties");
        }
    }
}

控制台信息

Exception in thread "main" java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at com.test.PropertyUtil.main(PropertyUtil.java:10)

第十行代码就是:
properties.load(PropertyUtil.class.getClassLoader().getResourceAsStream("LYZ.properties"));
 
阅读 2.7k
1 个回答

应该是这里报指针

PropertyUtil.class.getClassLoader().getResourceAsStream("LYZ.properties")

那么最可能的原因就是资源文件没有找到. 你要确认文件所在路径,因为你给的是相对路径, 即LYZ.properties应与PropertyUtil所在包的目录相同才行.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题