내 응용 프로그램에 다음 코드 블록이 있습니다.Thread.currentThread(). getContextClassLoader(). getResourceAsStream()이 null을 반환합니다.
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(FilePath);
여기서 'FilePath'는 파일의 절대 경로입니다.
위의 코드는 Linux 및 Windows에서 정상 모드로 응용 프로그램을 실행할 때 잘 작동합니다. (예 : 명령 프롬프트에서) 그러나 응용 프로그램을 Windows 서비스로 실행하면 작동하지 않습니다. 입력 스트림이 'null'로 표시됩니다.
누구든지 이전에 이러한 문제가 발생 했습니까? 자바 클래스 로더 이외의 다른 정보를 찾을 수 없습니다. 여기서 우리는 사용될 올바른 클래스 로더 인 "ContextClassLoader"를 사용합니다.
실마리가 있습니까?
정확한 경로를 알려주세요. "절대 경로"는이 문맥에서 잘못 들린다. –
여기 내 경로는 저장소와 비슷합니다. + File.separator + "resources"+ File.separator + "api_templates"+ "api.xml"; (wrapper.conf 파일에 홈 디렉토리를 설정하고 응용 프로그램을 서비스로 시작합니다 성공적으로). "저장소 디렉토리가 내 홈 디렉토리의 첫 번째 하위 디렉토리입니다. – Ratha
서비스가 실행될 때 응용 프로그램이 실행되는 ID로 열려는 파일에 대한 읽기 액세스가 가능합니까? ID가 잘 작동하지만 서비스가 아닌 경우 내 마음에 유일한 차이점은 실행 방법이나 실행 대상입니다. – CodeChimp