Frage

Ich bin mit einem Problem konfrontiert, wenn ich meine Java-Anwendung müssen verteilen, erstellt mit NetBeans 6.8. Ich habe einige Übersetzungsdateien mit gettext als Klassendateien aus - gemacht mit msgfmt von gettext Paket mit dem folgende Skript (Shell-Skript unter msys laufen - keine Probleme hier)

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

Hier ist die Verzeichnisstruktur:

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

Die Manifest-Datei hat den folgenden Klasse-Pfad:

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

Die Anwendung funktioniert ohne Probleme mit Ausnahme der Übersetzungsdateien, die nicht geladen werden können. Der Ladeteil ist die folgende (der Kunde will eine Französisch-Übersetzung):

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

. Hinweis: Dieses Problem wird nur angezeigt, wenn sie versuchen, mit der JAR-Datei ausführen (von NetBeans funktioniert gut läuft, läuft von der Kommandozeile auch die kompilierten Klassen arbeiten, aber nicht, wenn die JAR-Datei ausgeführt wird (java -jar main.jar)

Der lustige Teil ist, dass ich dieses Problem nicht, wenn ich den Klassenpfad von der Manifest-Datei ändern und hinzufügen „“ Pfad zum Classpath und dieses Verzeichnis Struktur:

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

Ich verwende Windows mit den folgenden Java-Versionen:

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)

Ich schätze jede Hilfe, da dies wird frustrierend.

Danke,

Iulian

War es hilfreich?

Lösung

Das eigentliche Problem (wie in den Kommentaren beschrieben) war ein fehlender / in dem Klassenpfad aus der JAR-Datei. Zum Beispiel nur den Pfad mit wie folgt aus: Pfad / war myPath nicht genug. Ich brauchte ein / (Pfad / myPath /) hinzufügen, damit es funktioniert

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top