jar Datei

Alles zum Qt Framework für Java
Antworten
tester
Beiträge: 11
Registriert: 17. Januar 2008 18:32

jar Datei

Beitrag von tester »

Hallo,
bin nach dieser Anleitung vorgegangen:
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:

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
Bekomme Fehlermeldung wegen der Manifest-Datei (Failed to load Main...). Ich gebe meine Klasse als Main-Klasse an.

Kann mir jemand weiterhelfen?

Danke
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Kannst Du sowohl Deinen Aufruf als auch die Fehlermeldung etwas präzisieren ?

Läuft der Aufruf, wenn Du kein neues Jar-File baust ?

Gruß Arne
VuuRWerK
Beiträge: 82
Registriert: 11. Juni 2007 20:46
Wohnort: Dresden

Beitrag von VuuRWerK »

In der Manifest-Datei muss die Klasse stehen in welcher Deine static main Methode sich befindet.

Gut Schuß
VuuRWerK ;)
Es gibt nur 3 natürliche Feinde des Programmierers: Tageslicht, frische Luft und das unerträgliche Gebrüll der Vögel.
Oft ist die Ursache des schwarzsehens lediglich ein verrutschen des Bretts vorm Kopf =)
tester
Beiträge: 11
Registriert: 17. Januar 2008 18:32

Beitrag von tester »

Hallo,
möchte nun meine Angaben präzisieren.

Habe diese Schritte durchgeführt:
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
Meine Manifest-Datei:

Code: Alles auswählen

Main-Class: Flieger
Class-Path: j/qtjambi.jar
Habe im Ordner j die qtjambi.jar, Flieger enthält die Main-Klasse.

Rufe dann über Console

Code: Alles auswählen

jar -cvf Flieger.jar Flieger
auf.

Wenn ich nun die jar-Datei ausfähren möchte, bekomme ich die Meldung:

Code: Alles auswählen

Failed to load Main-Class manifest attribute from C:\.......\Flieger.jar
MfG
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

.. mal ne Verständnisfrage

Hast Du die Manifestdatei in das 'qtjambi.jar' eingebaut oder in Dein 'Flieger.jar' (da gehört es nämlich rein).

So wie Du das schilderst ist es kein Problem des qtjambi.jar (das sollte nämlich nur deshalb kompakt gebaut werden, damit die ganzen nativen libs enthalten sind), sondern der Ausführbarkeit Deines Flieger.jar.

Vielleicht solltest Du erst einmal - unabhängig von dem neu gepackten qtjambi.jar - versuchen, ein ausführbares Jar File aus Deinem Flieger.jar zu machen und erst anschließend das native qtjambi.jar verwenden.

War das schon erfolgreich (siehe meine letzte Frage) ?

Gruß Arne
tester
Beiträge: 11
Registriert: 17. Januar 2008 18:32

Beitrag von tester »

Hallo Arne,
habe jetzt mein Java-Code in die Datei Flieger1 gepackt. Da mache ich mittels javac Byte-Code draus. Wenn ich dann folgendes eingebe, funktionert es:

Code: Alles auswählen

java -classpath .;C:\qtjambi-win32-....\qtjambi.jar Flieger


Als jar kriege ich es immer noch nicht hin.
Mein Spiel ruckelt immer noch bei 100 Sternen, da wollte ich die jar-Datei auf einem anderen Rechner testen. Man hat mir vorgeschlagen, ich solle es auf einem anderen Rechner probieren, die Zuckungen könnten dann weg sein...

Es müssste ja nicht einmal eine jar-Datei sein. Ich habe versucht, die qtjambi.jar in die Flieger1 zu stecken, diese Datei auf einem anderen Rechner mittels "java -classpath .;qtjambi.jar Flieger" auszuführen -Fehlanzeige.

Für Ratschläge bin ich Dankbar.
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

Vielleicht solltest Du es mal mit fat-jar probieren, damit kann man relativ einfach ein einziges ausführbares Jar-Archiv erstellen. Das 'native' qt.jambi.jar müsstest Du dann halt auch einbinden.

Gruß Arne
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

ArneStocker hat geschrieben:Vielleicht solltest Du es mal mit fat-jar probieren, damit kann man relativ einfach ein einziges ausführbares Jar-Archiv erstellen. Das 'native' qt.jambi.jar müsstest Du dann halt auch einbinden.
@ArneStocker
danke für die Information, ich arbeite gerade auch mit QtJambi 4.3.4 und Eclipse. Ich bin hin und weg. Hauptsächlich bleib ich bei Qt C++. :D


Nun stellt sich mir eine Frage:
Kann ich eine einzige JAR Datei erstellen die alle Bibliotheken von QtJambi (qtjambi.jar) und die nativen Bibliotheken von QtJambi entählt plus meine zusätzlichen Bibliotheken und meine HauptKlasse, so das ich nur eine JAR Datei habe und sie ausführen kann?

Edit: 22:41
Ich habe mir gerade das Preview Package von QtJambi 4.4.0 angeschaut. So wie es aussieht hat sich dadurch mein problem gelöst.

Auszug aus der changes-4.4.0_01:

Code: Alles auswählen

...


************************************************************************
 Package Structure...
************************************************************************

 - Binary package no longer contains generator or generator
   example. This is because only a package that is built from source
   can properly make use of the generator. Providing the generator in
   the binary package where it could in fact not be used made this
   less clear.

 - The binary package or a succesfully built source package now
   contains several .jar files in the root directory.

   * qtjambi-4.4.0_01.jar; The platform independent classes
   * qtjambi-$OS-$COMPILER-4.4.0_01.jar; The native libraries
   * qtjambi-examples-4.4.0_01.jar; The examples and demos
   * qtjambi-designer-4.4.0_01.jar; Classes used by Qt Designer
   
   The classes jar and native library jar files are the only two files
   needed to run Qt Jambi applications. The libraries in the bin and
   lib subdirectories are there solely for running Qt Designer, Qt
   Linguist and the other C++ tools.

...
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
ArneStocker
Beiträge: 300
Registriert: 3. November 2004 16:15
Wohnort: Berlin

Beitrag von ArneStocker »

... gefällt mir und erleichtert das deployen ungemein :-)
... wobei mich an der nächsten Release wohl am meisten das QtWebKit reizt

Gruß Arne
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

Beitrag von ChMaster »

Mich reizt das QtWebKit natürlich auch, endlich eine Engine die das entwicklen für/von HTML Seiten erleichtert und noch mehr. Mich reizt auch die QtPhonon Engine. Natürlich teste ich gerade das QtWebKit u. das QtPhonon im C++ Framework von Qt.
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Antworten