찾다

 >  Q&A  >  본문

java - 读取.properties配置文件 空指针异常

碰到一个properties的资源文件,读取报空指针,什么原因?
我使用下面2中方式读取,都是空指针。

Properties pro 
          = new Properties();
          pro.load(Demo.class.getResourceAsStream("/project/db.properties"));
          pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("project/db.properties"));

Exception:

Exception in thread "main" java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Unknown Source)
    at java.util.Properties.load0(Unknown Source)
    at java.util.Properties.load(Unknown Source)
    at project.HashMap.Demo.main(Demo.java:23)
PHPzPHPz2770일 전1088

모든 응답(3)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 09:18:43

    널 포인터 예외, 23번째 줄에 비어 있도록 초기화되었거나 초기화되지 않은 변수가 있는지 확인하세요!

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:43

    1.Demo.class.getClassLoader().getResourceAsStream(), 리소스 구성 파일은 프로젝트 CLASSPATH 경로에 위치하며, 로드 시 파일 이름이 직접 지정됩니다.

    2. 또는

    클래스를 사용하여 리소스 구성 파일을 로드합니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:18:43

    으아악

    널 포인터 예외는 리소스 파일을 읽는 위의 명령문이 널 포인터를 반환하기 때문에 발생합니다. 즉, 가 리소스 파일(경로 오류) 을 올바르게 찾지 못하기 때문입니다.

    질문자는 Demo.class.getResourceAsStream()Thread.currentThread().getContextClassLoader().getResourceAsStream()의 위치 지정 경로를 명확히 하는 것이 좋습니다. 이런 종류의 문제가 다시 발생하면 쉽게 해결될 것입니다.

    다음 세 문을 출력해 보세요. 세 번째 문은 Thread.currentThread().getContextClassLoader()

    과 비슷합니다. 으아악

    첫 번째 문은 Demo 클래스의 절대 경로를 가져오고, 두 번째와 세 번째 문은 CLASSPATH 프로젝트의 절대 경로를 가져옵니다. 리소스를 읽기 위해 작성한 두 문은 다음 경로 项目CLASSPATH/project/db.properties에 있습니다. 해당 위치에 리소스 파일이 있는지 확인하세요.

    회신하다
    0
  • 취소회신하다