Question

Je suis face à un problème quand je dois distribuer mon application Java, NetBeans 6.8 créés à l'aide. 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)

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 en français):

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

Note:. 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 fonctionnent aussi, mais pas lors de l'exécution du fichier jar (java -jar main.jar)

Le plus drôle est que je n'ai pas ce problème si je modifie le chemin de classe du fichier manifeste et ajouter « » chemin du classpath 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)

Je vous remercie de toute aide que cela devient frustrant.

Merci,

Iulian

Était-ce utile?

La solution

Le problème réel (tel que décrit dans les commentaires) était un manque / dans le chemin de classe du fichier jar. Par exemple ayant seulement le chemin comme ceci: chemin / myPath ne suffit pas. Je avais besoin d'ajouter un / (chemin / myPath /) pour le faire fonctionner

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top