Java 웹 애플리케이션에서 CLASSPATH (즉, 소스 폴더 내부)에있는 XML 파일의 InputStream을 가져 오려면 어떻게해야합니까?
답변:
ClassLoader.getResourceAsStream()
.
아래 주석에서 언급했듯이 다중 ClassLoader
환경 (예 : 단위 테스트, 웹앱 등)에있는 경우을 사용해야 할 수 있습니다 Thread.currentThread().getContextClassLoader()
. http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream/2308388#comment21307593_2308388을 참조 하십시오 .
InputStream is = new ClassPathResource("/path/to/your/file").getInputStream()
ClassLoader.class.getResourceAsStream("/path/file.ext");
java.lang.NullPointerException: null
, 내가 생각하는 가장 간단한 방법입니다new ClassPathResource("/path/to/your/file").getInputStream()
someClassWithinYourSourceDir.getClass (). getResourceAsStream ();
getClass().getResourceAsStream("...")
기타
제안 된 솔루션을 시도했지만 파일 이름에 슬래시가 작동하지 않았습니다. 예 : ... (). getResourceAsStream ( "/ my.properties"); null이 반환되었습니다.
슬래시 제거가 작동했습니다. .... getResourceAsStream ( "my.properties");
다음은 doc API에서 가져온 것입니다. 위임 전에이 알고리즘을 사용하여 주어진 리소스 이름에서 절대 리소스 이름이 구성됩니다.
If the name begins with a '/' ('\u002f'), then the absolute name of the resource is the portion of the name following the '/'.
Otherwise, the absolute name is of the following form:
modified_package_name/name
Where the modified_package_name is the package name of this object with '/' substituted for '.' ('\u002e').
null
없이/
. 슬래시 문자를 추가하면 저에게 효과적이었습니다. @ hussein-terek과 내 설정 및 설정 사이에 다른 차이점이 있어야합니다.