Class.getResource()
을 사용하여 장기 실행 Java 응용 프로그램의 jar 파일을로드합니다. 그것은 잘 작동합니다. 그러나 앱이 오랫동안 실행 된 후에는 null
을 반환하기 시작합니다.장시간 실행 후 Class.getResource()가 null을 반환합니다.
어떻게 해결해야합니까? 볼 수있는 것은 이 반환하는 예외 인 경우입니다. null
; 그러나 나는 을 발견 할 수 없다. 왜이 반환되는지는 null
이다.
Class.getResourceAsStream()
에 의해 반환 된 폐쇄되지 않은 스트림을 확인했지만이를 호출하지 않습니다. (비록 내 라이브러리 중 하나는 ...) 나는 닫히지 않은 FileInputStreams도 확인했지만 아무 것도 찾지 못했습니다. 이 문제가 발생하는 동안 FileInputStreams는 계속 사용할 수 있습니다.
편집 :이 문제는 this one과 같은 것으로 보입니다. 또한 possibly related.
을 나는
URL.openStream()
리턴 한 InputStream로부터 MANIFEST.MF 중 버전을 읽고 있던 코드를했다 문제의 클래스를 디 컴파일하고, 메소드와 동일한 메소드를 호출하고, 결과를 로깅합니다. 먼저, Class.getClassLoader0(), Class.getClassLoader0(), getResource(), Class.getClassLoader0(). getParent(). getResource(), Class.getClassLoader0() .getBootstrapResource()'와'Class.getClassLoader0(). findResource()'(대부분 리플렉션에 의해서만 접근 가능) - 물론'.getResource() '가 작동을 멈추기 전후에 출력을 비교할 수 있습니다. – Siguza@Siguza 고마워요! 나는 그것을 시도하고, 몇 주 후에 다시보고 할 것이다. – alexantd