먼저 Java EE 웹 응용 프로그램에서 ClassLoader#getSystemResourceAsStream()
을 사용하지 마십시오. 대신 ClassLoader#getResourceAsStream()
을 사용하십시오. 또한 Java SE 데스크톱 응용 프로그램에서 ClassLoader#getSystemResourceAsStream()
을 사용하여 큰 물음표를 넣을 것입니다.
ClassLoader
은 궁극적으로 클래스 경로에서 자원을로드합니다. 따라서 파일이 웹 응용 프로그램의 런타임 클래스 경로 인 또는에 의해 기본적으로 덮여있는 경로 중 하나에 배치되어 서버를 통해 웹 응용 프로그램의 런타임 클래스 경로에 파일의 새 경로를 추가하기 만하면됩니다. Tomcat의 /conf/catalina.properties
속성과 같은 특정 구성 설정 (예 : shared.loader
)
웹 응용 프로그램의 런타임 클래스 경로에서 다루는 기본 경로 중 하나는 WAR의 /WEB-INF/classes
폴더입니다. IDE 프로젝트의 관점에서 "Java Source"(src) 폴더의 루트 폴더에 파일을 놓습니다. 여기에 모든 Java 패키지와 클래스가 있습니다. IDE는 궁극적으로 빌드 된 WAR 파일의 /WEB-INF/classes
으로 끝납니다.
나는 아직도 당신이 이 아니라고 가정합니다. 명시 적으로 말했듯이, webapp 내부에서 파일을 생성합니다. 그건 효과가 없을거야. 실제로에 쓰기 액세스 권한이 필요하면 절대 디스크 파일 시스템 경로가 필요합니다. VM 인수 또는 환경 변수로 제공하여 구성 가능하게 만들 수 있습니다.