내 응용 프로그램에서 리소스를 번들에로드하는 중 심각한 문제가 발생했습니다. 나는 몇 시간 동안이 일을 해왔고, 내가 뭘 잘못하고 있는지 정말로 모른다.Classpath의 리소스에 대한 MissingResourceException
로깅에 국제화를 적용하려는 Java 응용 프로그램이 있습니다. 이클립스에서는 모든 것이 잘 작동한다. 컴파일 된 jar를 테스트 환경에 배치하여 특성 파일을 찾을 수없는 경우에만 사용한다. 내 등록 정보 파일은 logging_en.properties입니다. 파일 시스템에 있는지 확인했습니다 (Linux, 그런데). 내 응용 프로그램을 실행하면, 다음과 같은 명령을 실행
$JAVA_HOME/bin/java -verbose:gc -Xloggc:/var/tmp/app_gc.log -Xms1000m -Xms1000m -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:NewRatio=3 -classpath $CLASSPATH -Djava.rmi.server.codebase=file:///data/dev/app/common/ext/dirmi-1.1.1.jar -Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=xxx -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false $JAVA_SECURITY $IMPORT_PROPERTIES $APP_PROPERTIES app.serverimpl.ServerStarter
내 CLASSPATH 변수는 다음과 같습니다
/data/dev/app/server/logging_en.properties:/data/dev/app/common/lib/common.jar:/data/dev/app/common/ext/dirmi-1.1.1.jar:/data/dev/app/common/ext/log4j-1.2.17.jar:/data/dev/app/common/ext/cojen-2.2.3.jar:/data/dev/app/common/lib/server.jar
특성 파일 내 클래스 경로에 있습니다. 코드 자체에서 나는 실행 정확한 라인은 다음과 같습니다
Exception in thread "main" java.util.MissingResourceException: Can't find bundle for base name logging, locale en_US
그냥 나 ', 안전을 위해 : 서버, 나는 변함없이 누락 된 자원 예외가 시작하는 처음에서
LogManager.getLogger("server").setResourceBundle(java.util.ResourceBundle.getBundle("logging"));
지금까지 파일을 logging.properties 및 logging_en_US.properties에 복사하고 세 클래스를 모두 클래스 경로에 추가했습니다. 여전히 같은 문제입니다. 나는 바보 같은 일을하고 있거나 뭔가 빠져있는 것을 압니다.하지만 저는 정말 실망합니다. 내 항아리에 파일을 번들하지 않으므로 비행 중에 수정할 수 있으므로 클래스 패스에서이 작업을 수행 할 수 있기를 바랍니다.
정확하게 그랬습니다. 모든 것이 이제는 잘 돌아갑니다. 나는 그것을 놓치기 위해 나 자신을 때려 눕힐 수 있었다. 정말 고맙습니다! –