ResourceBundles вне файла JAR - PullRequest
       7

ResourceBundles вне файла JAR

1 голос
/ 09 марта 2010

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

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

Примечание. Эта проблема возникает только при попытке запуска с файлом jar (работает из 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)

Я ценю любую помощь, потому что это расстраивает.

Спасибо,

Юлиан

1 Ответ

1 голос
/ 12 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...