Domanda

Sono di fronte a un problema quando ho bisogno per distribuire la mia applicazione java, creato utilizzando NetBeans 6.8. Ho alcuni file di traduzione realizzati con gettext come file di classe - realizzato con msgfmt dal pacchetto gettext con il seguente script (script di shell eseguito con msys - nessun problema qui)

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

Ecco la struttura di directory:

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

Il file manifesto ha la seguente classe-path:

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

L'applicazione funziona senza alcun problema, tranne i file di traduzione che non possono essere caricati. La parte di carico è il seguente (il cliente vuole una traduzione francese):

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

. Nota: Questo problema appare solo quando si cerca di correre con il file jar (che parte da NetBeans funziona bene, che va dalla linea di comando le classi compilate anche lavorare, ma non quando si esegue il file jar (java-jar main.jar)

La parte divertente è che io non ho questo problema se modifico la classe-percorso dal file manifest e aggiungi "" percorso al classpath e avere questa struttura di directory:

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

Sto usando Windows con le seguenti versioni di 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)

Apprezzo tutto l'aiuto come questo diventa frustrante.

Grazie,

Iulian

È stato utile?

Soluzione

Il problema reale (come descritto nei commenti) è stato un / nel percorso di classe mancante dal file jar. Per esempio avendo solo il percorso in questo modo: percorso / myPath non era sufficiente. Avevo bisogno di aggiungere una / (percorso / myPath /) per farlo funzionare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top