Java 1.5, Java EE 5는 6.1입니다. 예외 ResourceBundle.getBundle (…)으로 리소스 번들을로드했습니다.
문제
다음은 현재 프로덕션 환경에서 새로운 데이터 센터 환경으로 응용 프로그램을 마이그레이션하는 동안 직면하고있는 또 다른 문제입니다 (아래 세부 사항 참조).
- 현재 생산 환경 : Java 1.4, Java EE 3, 5.1, JSF 2.1
- 새로운 환경 : Java 1.5, Java EE 5, 6.1, JSF 2.1
여기에는 다음 구조가있는 타사 항아리 파일이 있습니다 (이미지 확인 - 세부 사항을 숨기고 용서해)
이 클래스에는 ResourceBundle (db.properties)에서 데이터베이스 속성을로드하는 코드가 있습니다. Cavaj가 렌더링 한 코드는 다음과 같습니다.
private static ResourceBundle getDBProperties() { if(dbProperties == null) { dbProperties = ResourceBundle.getBundle("db"); } return dbProperties; }
이 응용 프로그램은 현재 환경에서 잘 작동합니다. 그러나 어쨌든 우리가 응용 프로그램을 새로운 환경으로 옮길 때 우리는 "MissingResourceException"을 얻습니다 (아래 참조).
Caused by: java.util.MissingResourceException: Can't find bundle for base name db, locale en_US at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:863) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:832) at java.util.ResourceBundle.getBundle(ResourceBundle.java:576) at com.myco.wo.vs.util.OrderLovUtilities.getDBProperties(OrderLovUtilities.java:195)
우리는 다음과 같은 해결 방법을 시도했지만 아무도 작동하지 않았습니다.
- db_en_us.properties로 db.properties로 이름을 바꿨습니다
- 속성 파일을 항아리에 넣습니다
- 항아리 파일을 귀 수준으로 이동합니다.
여기서 무엇이 잘못 될 수 있는지 제안 해주세요. 그리고 우리는 그것을 작동시키기 위해 무엇을 할 수 있습니까? :)
메모: 파일 DB.Properties는 Web-Inf/Classe 디렉토리 아래에 있습니다. 또한 우리는 위에서 언급 한 위치에 넣었지만 아무 소용이 없습니다.
문안 인사,
- 아쉬 쉬
해결책
ENT 설정에서 클래스 로더 주문을 변경하십시오. 관리 콘솔의 응용 프로그램 (From PARENT_FIRST
에게 PARENT_LAST
) 귀와 전쟁 수준에서.
제 3 자 수업 (나에게) (com.myco.wo.vs.util.OrderLovUtilities
)는 web-inf/lib의 JAR 파일에서로드되지 않지만 서버의 다른 위치에서 나옵니다. 그런 다음 클래스 로더에는 속성 파일이 표시되지 않습니다.
이것이 문제인 경우 클래스 로더 순서를 변경하면 클래스의 예상 사본이로드 될 수 있습니다.
또한 관리자 콘솔의 클래스 로더 뷰어가이를 밝힐 수 있습니다.
다른 팁
DB.Properties 파일을 Web-Inf/Classes Directory에 넣었습니까?