2010-03-09 5 views
1

У меня возникла проблема, когда мне нужно распространять свое приложение java, созданное с помощью NetBeans 6.8. У меня есть некоторые файлы перевод, сделанные с gettext, как файлы класс - сделано с msgfmt из GetText пакета с помощью следующего сценария (сценарий оболочки не работать под MSYS - никаких проблем здесь)ResourceBundles вне файла jar

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 

Вот структура каталога:

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"); 

Примечания: Эта проблема появляется только при попытке запустить с файлом баночки (работаю с NetBeans работает хорошо, работает из командной строки скомпилированных классов работаю также, но не при запуске файла jar (java -jar main.jar).

Самое смешное, что у меня нет этой проблемы, если я изменю путь класса из файла манифеста и добавлю «.». путь к пути к классам и имеющий эту структуру каталогов:

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

Вы не поверили бы этому ... addding a/("lib/translate /" вместо "lib/translate") в файле манифеста заставляет материал работать ... Как я могу сделать это из файлов ant xml? – INS

ответ

1

Реальная проблема (как описано в комментариях) был отсутствующей/в классе пути из файла фляги. Например, имея только такой путь: path/myPath было недостаточно. Мне нужно было добавить/(путь/myPath /), чтобы заставить его работать

Смежные вопросы