내가 메이븐 멀티 모듈을 기반으로 웹 응용 프로그램을 구축 오전 .properties 파일을로드 할 수 없습니다. 그래서 내 프로젝트 구조는 다음과 같다 :자바 웹 애플리케이션은 단지
/module1
/src/main/java
package/Module1.java
/src/main/resources
conf/i18n_en.properties
/webapp
/src/main/java
package/Web.java
/src/main/resources
conf/i18n_en.properties
/src/main/webapp
내가 모든 모듈의 국제화에 대해 서로 다른 속성 ("i18n_en.properties")를 가지고, 나는 속성 코드 파일을로드하고 정보를 얻을 수 있습니다. 그것은 단일 모듈 테스트에서 잘 실행되는 것 같습니다.
private ResourceBundle rb;
String filename = BASE_NAME + "_" + LANG + ".properties";
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(filename);
if(in == null) {
in = c.getResourceAsStream(filename);
}
if (in == null) {
in = c.getClassLoader().getResourceAsStream(filename);
}
if (in != null) {
rb = new PropertyResourceBundle(in);
}
그러나 IDEA를 사용하여 바람둥이를 시작하면 프로그램은 webapp의 속성 만로드합니다! "Module1"의 속성을 찾을 수 없습니다!
가 나는 innner 항아리에서로드 속성의 문제 같아요. 배포 된 디렉토리는 다음과 같습니다.
/WEB-INF
/classes
/conf/i18n_en.properties (from webapp)
/lib
/Module1.jar (has it's own properties in it)
정말 혼란 스러웠습니다. 나는 오랫동안 관련된 모든 것을 검색했고 비슷한 것을 발견했지만 문제를 해결할 수는 없습니다. 나는 그들이 말한 것을 다했다고 생각한다. 어디에 문제가 Java WebApp: Loading resource from .jar located in WEB-INF
나는 특성을 내부 항아리를로드하는 몇 가지 방법이 있어야합니다, 모른다. 누군가가 나를 도와주세요, jar 파일에 아주 많이 ~
당신의 BASE_NAME 변수의 값이 무엇입니까? –
BASE_NAME 앞에 '/'를 추가해야합니다. –
예, 말씀하신 것을 시도했습니다. "/ conf/i18n_properties", "conf/i18n_properties"와 같습니다. 항아리에 포장되어 있으면 파일을 찾을 수 없습니다. @ JekinKalariya – Alvin