리소스 번들 및 i18n을 많이 사용하는 J2SE 응용 프로그램 (키오스크 스타일 앱)으로 작업하고 있습니다. 여기에는 단순한 번역이 아니라 형식 및 기타 관심사가 포함됩니다. 리소스 로딩을 균질화 할 수있는 사용자 지정 논리가 있지만 상당히 간단합니다. 내가 가진 문제는 MissingResourceException
입니다. 응용 프로그램에서 사용자 정의 논리를 무시하고 ResourceBundle
클래스를 직접 호출하여이 특정 번들을로드하더라도 Java는 특정 로켈에 대해 사용자 정의 논리를로드 할 수 없습니다. 여기에 스택 트레이스 루트 예외는 다음과 같습니다자바 누락 리소스
Caused by: java.util.MissingResourceException: Can't find bundle for base name version1/FormatResource, locale en_GB
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:836)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:726)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:576)
자원 번들 내 클래스 경로의 상단에 이클립스에서 클래스 폴더에 디렉토리 "버전 1"입니다. 이 폴더에는 동일한 리소스 번들 로딩 로직을 사용하여 잘로드 된 다른 리소스 번들뿐만 아니라 시스템 클래스 로더를 사용하여로드 할 때 잘로드되는 수많은 XML 구성이 포함되어 있습니다. 자원 번들에 대한 관련 파일은 다음과 같습니다 내 응용 프로그램이 폴란드 로케일로 시작되면
FormatResource_cs_CZ.properties
FormatResource_en_GB.properties
FormatResource_fr_BE.properties
FormatResource_fr_FR.properties
FormatResource_hu_HU.properties
FormatResource_nl_BE.properties
FormatResource_nl_NL.properties
FormatResource_pl_PL.properties
FormatResource_sk_SK.properties
이 모든 것이 괜찮습니다. 폴란드어 로케일로 사용자로 로그인하면 모든 것이 정상입니다. 영국 사용자로 로그인하면 응용 프로그램은 모든 en_GB 번들 (번역, 포맷터 등)을로드하려고 시도하고이 번들에서 실패합니다. FormatResource_en_GB.properties
은 클래스 경로에 있습니다. 위의 파일 목록은 명령 줄에서 복사하여 붙여 넣기합니다.
마지막으로 재미있는 점은 version1 디렉토리에 FormatResource_en_US.properties
을 정의하면 FormatResource_pl_PL.properties
파일도로드되지 않아 응용 프로그램이 시작되지 않는다는 것입니다.
누구든지 아이디어가 있습니까?