[FAQ] Natives Jar-File für Windows, Linux und Mac

Archiv häufig gestellter Fragen zum Thema Qt
Antworten
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

[FAQ] Natives Jar-File für Windows, Linux und Mac

Beitrag von ArneStocker »

Vorsorglich möchte ich mal kurz beschreiben, wie man mit QtJambi ein Jar File ertellt, in dem sich auch die nativen Bibliotheken befinden. Auf diese Weise müssen die nativen Bibliotheken nicht mehr gesondert mitgeliefert werden und das Verzeichnis mit den nativen Bibliotheken muss der VM nicht gesondert bekannt gemacht werden. Natürlich dürfen die so erstellten qtjambi.jar Files für die verschiedenen Plattformen nicht vertauscht werden ;-)

A. qtjambi.jar für Windows

1. einen leeren Ordner erstellen
2. den Inhalt aus dem ../bin Verzeichnis (die dll's außer denApplikationen) hineinkopieren,
ich habe auch die Datei 'Microsoft.VC80.CRT.manifest mit hineinkopiert. '
3. das qtjambi.jar file hineinkopieren
4. das qtjambi.jar file in dieses Vezeichnis entpacken
(so dass com und META-INF auf der selben Verzeichnisebene liegen wie die dll'.s)
5. den Ordner META-INF und die Datei qtjambi.jar löschen
6. auf der gleichen Verzeichnisebene die Datei MANIFEST.MF anlegen
ich habe folgenden Eintrag für das Manifest gewählt (die Zeilennummern natürlich nicht übernehmen)

Code: Alles auswählen

1. Manifest-Version 1.0
2. Main-Class: com.trolltech.examples.Application
3. 
4. <-- zwei leerzeilen nicht vergessen
7. Aus dem Verzeichnis ein neues Jar file qtjambi.jar bauen

Ich habe hierfür unter Windows ein Eclipse - Projekt angelegt und das neue Verzeichnis importiert. Anschießend habe ich über Export - Jar ein neues Jar File erstellt, wobei ich nicht ein neues Manifest erstellt, sondern das o.g. Manifest zur Übernahme ausgewählt habe.


B. qtjambi.jar für Linux

Unter Linux funktioniert es genauso, nur müssen die nativen Bibliotheken in einem Unterverzeichnis ../lib liegen, d.h. nicht der Inhalt von lib sondern das Verzeichnis lib wird in den neuen Ordner hineinkopiert (und später in das Jarfile übernommen)


C. qtjamb.jar für Mac
Habe ich noch nicht ausprobiert, aber nach dem was ich gelesen habe sind unter Mac keine weiteren nativen Bibliotheken erforderlich. Ich bitte vorsorglich mal um die Bestätigung eines Mac-Users.
Das war natürlich nicht zuende gedacht. Man muss die für Mac bestimmten Bibliotheken von QtJambi ebenfalls beifügen, allerdings werden außer den Bibliotheken von QtJambi keine zusätzlichen nativen Systembibliotheken benötigt (wie z.B. msvcrt71.dll für Windows oder libstdc++.so für Linux).



D. Programm ausliefern

Um das eigene Java-Programm mit QtJambi für verschiedene Plattformen auszuliefern, genügt es (neben den sonstigen notwendigen *.jar Files) das für die Zielplattform bestimmte qtjambi.jar File mitzugeben und in den classpath der eigenen Anwendung aufzunehmen.

Gruß Arne
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Das Thema hat sich jetzt mit der QtJambi Preview 4.4 von selbst erledigt.

Künftig wird grundsätzlich (je nach Zielplattform) ein zur Plattform passendes qtjambi.jar mit einem (ebenfalls plattformabhängigen) qtjambi_plattformxy.jar ausgeliefert. Das qtjambi_plattformxy.jar enthält alle notwendigen nativen Librarys, die von qtjambi.jar angezogen werden.

Es genügt also wenn das qtjambi.jar und das qtjambi_plattformxy.jar in den classpath aufgenommen werden.

Gruß Arne
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Im aktuellen Release von QtJambi 4.4.0_0.1 gibt es einen Fehler, der dazu führt, dass der o.g. Mechanismus in Verzeichnisse mit Leerzeichen nicht funktioniert.

Das automatische Entpacken der nativen Dateien in ein temporäres Verzeichnis funktioniert also nicht, wenn die Installation z.B. in

Code: Alles auswählen

C:\program files\...
erfolgt ist (Unter Vista wird je nach Spracheinstellung hierfür das Verzeichnis C:\Programme\ dargestellt, gleichwohl enthält das Verzeichnis dennoch ein Leerzeichen. Der Fehler wurde von Trolltech bereits für das nächste Release beseitigt. Bis dahin gibt es nur zwei Optionen:

1.Entweder QtJambi selbst oder Applikationen die QtJambi verwenden nicht ein ein Verzeichnis mit Leerzeichen kopieren

2. Oder die Datei 'qtjambi-win32-msvc2005-4.4.0_01' bzw. die Entsprechung für Linux oder Mac entpacken und den Classpath bzw den Djava.libarary.path auf das Verzeichnis mit den entpackten nativen Dateien setzen.

Gruß Arne
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Im aktuellen Release von QtJambi 4.4.0_0.1 gibt es einen Fehler, der dazu führt, dass der o.g. Mechanismus in Verzeichnisse mit Leerzeichen nicht funktioniert.
Das Problem ist jetzt mit der aktuellen Version 4.4.2 erledigt.

Gruß Arne
Antworten