2010-03-09 9 views
1

NetBeans 6.8을 사용하여 만든 Java 응용 프로그램을 배포해야 할 때 문제가 있습니다. I 클래스 파일로 gettext를 만들어 일부 번역 파일이 - 여기 jar 파일 외부의 ResourceBundles

PO_FILES=`find . -iname "*_*.po"` 
rm -f *.class 

for PO_FILE in $PO_FILES; do 
    CLASS_NAME=`echo $PO_FILE | sed "s/\.po$//" | sed "s/^.*\///"` 
    echo "Compiling $PO_FILE to class $CLASS_NAME" 
    msgfmt --java2 $PO_FILE -r $CLASS_NAME -d . 
done 

디렉토리 구조입니다 - (여기에 아무런 문제가 쉘 스크립트 MSYS에서 실행 없음) 다음 스크립트에서 gettext 패키지에서 msgfmt에서 만들어 :

main.jar 
lib/translate/Messages_fr$1.class 
lib/translate/Messages_fr.class 
lib/*.jar (many needed libraries - they work) 

lib/xxx.jar ... lib/translate ... lib/yyy.jar (jar files are not the problem) 

응용 프로그램을로드 할 수 없습니다 번역 파일을 제외한 모든 문제없이 작동합니다

매니페스트 파일은 다음 클래스 경로가 있습니다.

Locale.setDefault(Locale.FRANCE); 
myResources = ResourceBundle.getBundle("Messages"); 

참고 : 로딩 부분은 다음 (클라이언트가 프랑스어 번역 원) 인 JAR 파일을 실행하려고 할 때이 문제는 나타납니다 (컴파일 된 클래스 명령 줄에서 실행 잘 넷빈즈에서 작품 실행 또한 jar 파일 (java -jar main.jar)을 실행할 때 작동하지 않습니다.

재미있는 부분은 매니페스트 파일에서 class-path를 수정하고 "."을 추가하면이 문제가 발생하지 않는다는 것입니다. 클래스 경로에 대한 경로이며 다음 디렉토리 구조를 가짐 :

main.jar 
lib/translate/Messages_fr$1.class 
lib/translate/Messages_fr.class 
lib/*.jar (many needed libraries - they work) 
Messages_fr$1.class 
Messages_fr.class 

Windows에서 다음 Java 버전을 사용 중입니다.

C:\>java -version 
java version "1.6.0_18" 
Java(TM) SE Runtime Environment (build 1.6.0_18-b07) 
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing) 

D:\Program Files\Java\jdk1.6.0_17\bin>java -version 
java version "1.6.0_17" 
Java(TM) SE Runtime Environment (build 1.6.0_17-b04) 
Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing) 

도움이되었으므로 감사합니다.

이 울리

+0

당신은 그것을 믿지 않을 것이다 ... manifest 파일에/("lib/translate /"대신 "lib/translate /" 물건을 작동하게 ... 개미 XML 파일에서 어떻게이 작업을 수행 할 수 있습니까? – INS

답변

1

(주석에 설명 된대로) 실제 문제가 있었다, 감사 누락/jar 파일에서 클래스 경로입니다. 예를 들어 path/myPath만으로는 충분하지 않았습니다. 나는 그것을 만들기 위해/(path/myPath /)를 추가 할 필요가 있었다.