Je suis confronté à un problème lorsque j'ai besoin de distribuer mon application Java, créée à l'aide de NetBeans 6.8. J'ai quelques fichiers de traduction effectués avec gettext sous forme de fichiers de classe - fait avec msgfmt du package gettext avec le script suivant (script shell exécuté sous msys - aucun problème ici)ResourceBundles en dehors d'un fichier 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
Voici la structure du répertoire:
main.jar
lib/translate/Messages_fr$1.class
lib/translate/Messages_fr.class
lib/*.jar (many needed libraries - they work)
le fichier manifeste a le chemin de classe suivante:
lib/xxx.jar ... lib/translate ... lib/yyy.jar (jar files are not the problem)
l'application fonctionne sans aucun problème, sauf les fichiers de traduction qui ne peuvent pas être chargés. La partie de chargement est le suivant (le client veut une traduction française):
Locale.setDefault(Locale.FRANCE);
myResources = ResourceBundle.getBundle("Messages");
Remarque: Ce problème apparaît uniquement lorsque vous essayez de courir avec le fichier jar (en cours d'exécution de NetBeans fonctionne bien, en cours d'exécution de la ligne de commande les classes compilées travailler aussi mais pas lors de l'exécution du fichier jar (java -jar main.jar)
La partie amusante est que je n'ai pas ce problème si je modifie le chemin de classe à partir du fichier manifeste et ajouter "." chemin d'accès au chemin de classe et ayant cette structure de répertoire:
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
J'utilise Windows avec les versions Java suivantes:
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)
J'apprécie toute aide que cela devient frustrant.
Merci,
Iulian
Vous ne le croiriez pas ... ajoutant un/("lib/translate /" au lieu de "lib/translate") dans le fichier manifeste ça marche ... Comment pourrais-je faire ça à partir des fichiers ant XML? – INS