Krain Geschrieben 25. Juni 2002 Geschrieben 25. Juni 2002 Hi zusammen, Ich will meine Java-Applikationen in Windows ausführbar machen. Jetzt habe ich gelesen, daß man die Klassen in ein Jar-Archiv stellen kann und dann irgentwie im Manifest festlegen kann, welche Klasse der Einstiegspunkt sein soll. Kann mir mal einer erklären,wie das genau funktioniert? Danke im voraus Krain Zitieren
LoCal Geschrieben 25. Juni 2002 Geschrieben 25. Juni 2002 Hi, hier http://java.sun.com/docs/books/tutorial/jar/basics/index.html findest Du einen recht guten überblick über jar files und da ist auch ein link über das Manifest. Für eine ausführbare JAR-Datei muß folgende Zeile in das Manifest: Main-Class: KlasseMitMAIN Wobei hier hier KlasseMitMAIN als Platzhalter für den Klassenname steht. Wenn also die Klasse mit der mainFunktion dtwn heißt, dann mußt es komplett so aussehen. Das jar erhält den Namen myJar.jar! Manifest-Version: 1.0 Created-By: NetBeans IDE Specified-By: /myJar.jarContent Main-Class: dtwn falls Du die Klasse in einem Package hast, dann sie das Manifest so aus. Das package heißt beispielsweise com.foo.bar Manifest-Version: 1.0 Created-By: NetBeans IDE Specified-By: /myJar.jarContent Main-Class: com.foo.bar.dtwn Für fragen bin ich offen Zitieren
Krain Geschrieben 25. Juni 2002 Autor Geschrieben 25. Juni 2002 Danke ich schau mir das mal an Zitieren
Krain Geschrieben 25. Juni 2002 Autor Geschrieben 25. Juni 2002 Ja gut - ich versuche mit dem Befehl $ jar cmf meinManifest.txt Haupt.jar Haupt*.class das Manifest im Archiv zu erzeugen. In meinem Manifest steht: Manifest-Version: 1.0 Created-By: 1.3.1_01 (Sun Microsystems Inc.) Main-Class: Haupt aber das Programm lässt sich trotzdem nicht ausführen, bzw. wenn ich es wieder entpacke steht im Manifest nur Manifest-Version: 1.0 Created-By: 1.3.1_01 (Sun Microsystems Inc.) Ich weiß nicht, was ich hier falsch mache Zitieren
LoCal Geschrieben 25. Juni 2002 Geschrieben 25. Juni 2002 Hmmm... meine jarfiles mache ich meistens in netbeans... ich habe die dinger noch nie zu fuss gemacht. Sorry Zitieren
Krain Geschrieben 25. Juni 2002 Autor Geschrieben 25. Juni 2002 Schon ok - ich find das schon irgentwie. Ich hab hier nur eine abgespeckte JCreator-Version und versuche das eben über die normale Eingabeaufforderung. Zitieren
GandalfTheWhite Geschrieben 27. Juni 2002 Geschrieben 27. Juni 2002 LOL, das Problem das die letzte Zeile nicht im Manifest steht hatte ich auch! einfach die Manifest File mit dem Notepad editieren und nocheinmal RETURN drücken nach deiner letzten Zeile!, steht auch irgendwo in der Doku von Sun! also, probiere es mal mit 1:Zeile | Manifest-Version: 1.0 (RETURN) 2:Zeile | Main-Class: Test (RETURN) 3:Zeile | gruß Stefan Zitieren
Krain Geschrieben 27. Juni 2002 Autor Geschrieben 27. Juni 2002 Hey Danke - Jetzt steht es bei mir im Archiv Manifest drin. Aber mein Problem hab ich trotzdem noch, daß sich das Jar-Archiv nicht mit Doppelklick ausführen läßt. Zitieren
LoCal Geschrieben 27. Juni 2002 Geschrieben 27. Juni 2002 Hast Du die JRE richtig installiert? Oder hast Du nur das SDK "entpackt". Zitieren
GandalfTheWhite Geschrieben 27. Juni 2002 Geschrieben 27. Juni 2002 Hmm, versuche es doch einmal mit dem Befehl jar cvmf meinmanifest Haupt.jar *.class sonst könnte evtl. der Eintrag Class-Path: Haupt.jar in der Manifest Datei evtl. noch helfen, probiere es einfach mal! Achso, und auf jeden Fall kontrollieren ob die *.jar Dateien auch mit javaw geöffnet werden! gruß Stefan Zitieren
Krain Geschrieben 27. Juni 2002 Autor Geschrieben 27. Juni 2002 Ja - das hab ich ja probiert - ich hab jetzt auch den Path mit angelegt, aber wenn ich es mit javaw öffne bringt er mir trotzdem den Fehler: Could not find main-Class obwohl das meine Haupt.class doch ist.:confused: Ich hab in der Haupt.class meine main-Funktion stehen, die eigentlich nur eine andere Klasse - nämlich einen schlichten JPanel - aufruft. Ich hab mir mal die DemoProgramme aus dem JDK angesehen, und da steht auch nicht mehr oder weniger im Manifest als bei mir. Die lassen sich aber über Doppelklick ausführen! Irgendwo hab ich da einen gewaltigen Denkfehler glaube ich. Oder muß ich da in der main-Funktion noch was wichtiges reinschreiben, worauf ich nicht geachtet habe? Meine Hauptklasse sieht so aus: public class Haupt { public static void main(String[] args) { new Magic(); } } Aber trozalledem Danke für Deinen Tip - Ich sag bescheid, wenn ich weitergekommen bin Zitieren
Krain Geschrieben 27. Juni 2002 Autor Geschrieben 27. Juni 2002 Ich krieg das einfach nicht hin! Ich weiß nicht, was ich noch ausprobieren soll, Kann mir jemand noch mal ganz langsam - sozusagen für einen Nichtsversteher wie mich - erklären, wie ich aus meiner Ansammlung von .class Dateien, von denen nur eine eine main-Routine enthält ein ausführbares Programm machen kann. Im Moment starte ich meine Programme entweder über meinen Editor(den JCreator) oder über die Eingabeaufforderung! Noch einmal ein Aufruf an alle: Wie kann ich meine Programme unter Windows ausführbar machen?? Ich versuch das jetzt schon seit drei Tagen, und jetzt qualmt:confused: mir langsam der Kopf! Zitieren
GandalfTheWhite Geschrieben 27. Juni 2002 Geschrieben 27. Juni 2002 also schicke dir einfach mal die Befehlszeile mit der ich aus mehreren class Dateien plus ein Image aus einem Unterverzeichnis! jar cvmf meinmanifest Rechner.jar Test.class Test$1.class Test$2.class Test$3.class NumericJTextField.class CloseableJFrame.class Images/test.jpg das sind "alle" class Dateien einzeln aufgeführt die nach der Comp. in meinem Projekt Verzeichnis vorhanden waren, weiß nicht ob Test$1.class etc. wirklich nötig sind , aber es geht! sonst kann ich dir leider auch nicht weiterhelfen, hatte selber meine "großen" Probleme beim erstellen der Jar Datei! aber irgendwie ging es dann mal! hab mir den Befehl dann als bat gespeichert LOL! Hoffe du bekommst es hin, sonst schick mir doch einfach mal die *.class Dateien und ich schaue ob es bei mir geht! gruß Stefan Zitieren
Krain Geschrieben 28. Juni 2002 Autor Geschrieben 28. Juni 2002 Und wie sah deine meinmanifest - Datei aus? ist das nur die Zeile: Main-Class: Haupt[return] -und das dann abgespeichert als textdatei? Zitieren
Krain Geschrieben 28. Juni 2002 Autor Geschrieben 28. Juni 2002 Hey - ich hab es endlich hinbekommen! Ich weiß nicht warum, aber jetzt funktioniert es endlich! Danke für die ganzen Tips, die ihr mir gegeben habt - das hat echt geholfen!:marine Zitieren
Krain Geschrieben 24. Februar 2005 Autor Geschrieben 24. Februar 2005 Sorry - Habe schon wieder eine Frage dazu: [JRE 1.5] Ich habe mit Eclipse3.0 ein JAR-Archiv meines Projektes erstellt, dazu eine Manifest-Datei mit passender Main-Class angegeben. Wenn ich das JAR-Archiv nun mitjava -jar MeinArchiv.jar ausführe funktioniert es! Allerdings mit: javaw MeinArchiv.jar kommt die Meldung Main-Class nicht gefunden. Hier nochmal mein Manifest: Manifest-Version: 1.0 Created-By: Eclpise3.0 Main-Class: ag.firma.main.Main Kann mir jemand weiterhelfen? Ich will das Archiv später mit dem Richtigen Programm verknüpfen, damit auch andere es verwenden können. Anderen ist das mit dem tippen von java -jar ... zu kompliziert. Ich hatte es schon mal hinbekommen, aber jetzt funktioniert es nicht mehr. Danke markus Zitieren
Krain Geschrieben 28. Juni 2005 Autor Geschrieben 28. Juni 2005 Neues Problem... Ich bekomme meine Jar-Datei unter Windows zum Laufen benötige allerdings das xerxes.jar darin. Aus Eclipse raus funktioniert es. Also habe ich das xerxes.jar Archiv mit in das root-Verzeichnis meiner Jar-Datei gepackt. Ich weiß, dass dieses Thema hier im Forum schon mehrmal besprochen wurde. Ich habe folgendes ausprobiert mit stets dem selben Ergebnis: - xerxes.jar ins Root-Verzeichnis meiner Jar-Datei gepackt mit der Angabe im Manifest [Class-Path: ./xerxes.jar] - xerxes.jar außerhalb meines Jar-Archives, aber in der Path-Variable von Windows eingetragen Kann mir jemand weiterhelfen? Zitieren
perdian Geschrieben 28. Juni 2005 Geschrieben 28. Juni 2005 Ich habe folgendes ausprobiert mit stets dem selben Ergebnis: - xerxes.jar ins Root-Verzeichnis meiner Jar-Datei gepackt mit der Angabe im Manifest [Class-Path: ./xerxes.jar] - xerxes.jar außerhalb meines Jar-Archives, aber in der Path-Variable von Windows eingetragenVersion 1 kannst du vergessen, das funktioniert nicht (zumindestens nicht ohne eigenen ClassLoader). Das JAR im Path zu haben nützt auch nichts, wenn schon dann bitte im Classpath. Am besten liest du dir ein Java Beginner Tutorial durch, in dem auch das Thema JARs, Classpath und Programme von der Kommandozeile starten mit aufgegriffen wird. Ist zwar ein wenig aufwenidger aber dafür weisst du hinterher garantiert, wie der Hase läuft Zitieren
Krain Geschrieben 28. Juni 2005 Autor Geschrieben 28. Juni 2005 Am besten liest du dir ein Java Beginner Tutorial durch, in dem auch das Thema JARs, Classpath und Programme von der Kommandozeile starten mit aufgegriffen wird. Ist zwar ein wenig aufwenidger aber dafür weisst du hinterher garantiert, wie der Hase läuft Danke perdi, genau mit dieser Antwort habe ich von Dir gerechnet Welches Tut ist dafür am besten? Das von Sun. Ich schlag mich mit dem M#+? schon Jahre rum und habe es immer wieder aufgeschoben es wirklich zu lernen. Dann muss ich wohl doch mal ran. Zitieren
perdian Geschrieben 29. Juni 2005 Geschrieben 29. Juni 2005 Welches Tut ist dafür am besten? Das von Sun.Jep, da ist eigentlich alles drin, was du brauchst: http://java.sun.com/j2se/1.3/docs/tooldocs/win32/java.html http://java.sun.com/j2se/1.3/docs/tooldocs/win32/classpath.html Zitieren
Krain Geschrieben 30. Juni 2005 Autor Geschrieben 30. Juni 2005 Danke, ich hab's. Weitergeholfen hat mir das hier: http://java.sun.com/docs/books/tutorial/jar/manifest/downman.html Dazu muss das benötigte Package mit im selben Verzeichnis liegen, wie das eigene. Natürlich ist es auch möglich ein beliebiges Unterverzeichnis anzugeben, wenn man es richtig in die Manifest-Datei einträgt. Danke für Eure Hilfe. Zitieren
Krain Geschrieben 16. August 2006 Autor Geschrieben 16. August 2006 Ich schon wieder. Wie oben bereits beschrieben habe ich es geschafft, ein externes package mit in den Class-Path einzubinden. Nun stehe ich allerdings vor einem neuen Problem. Ich habe folgenden Fall: root - MeineAnwendung.jar - [drivers] - mysql-connector-java-5.0.3-bin.jar Momentan ist es so gelöst, das der Treiber mysql-connector-java-5.0.3-bin.jar im Manifest in den Class-path eingetragen ist. Ich würde aber gerne eine Möglichkeit finden, dass der komplette Ordner [drivers] in den Class-path übernommen, so dass ich die treiber jederzeit austauschen oder erweitern kann, ohne eine neue Manifest-Datei bilden zu müssen und somit den Class-Path neu anzugeben. Ich habe es mit folgenden Eintragungen in der Manifest-Datei versucht: 1. Class-Path: drivers/ 2. Class-Path: drivers/*.jar Beide Möglichkeiten funktionieren wohl nicht. Für einen Ratschlag wäre ich dankbar. Gruß Markus Zitieren
Kaeyu Geschrieben 16. August 2006 Geschrieben 16. August 2006 ich hab ne kleine batch datei zum erstellen für das ganze geschrieben. bei mir hats auch nicht so geklappt, wies auf diversen internet seiten steht! du müsstest sie nur bearbeiten und den pfad deines jdk\bin\ eingeben, da ich noch nicht viel ahnung hab wie man dieses über dos finden kann (irgendwie über den dir befehl bestimmt). und dadurch, dass ich sie eigentlich nur für meinen pc gemacht habe, ist der pfad der da steht halt mein pfad. entpacken kannst du es überall hin. nur danach musst du die manifest vorlage einfach in deinen projekt ordner reinkopieren.Jar Ersteller mit Manifest Vorlage.rar Zitieren
perdian Geschrieben 16. August 2006 Geschrieben 16. August 2006 Ich würde aber gerne eine Möglichkeit finden, dass der komplette Ordner [drivers] in den Class-path übernommen, so dass ich die treiber jederzeit austauschen oder erweitern kann, ohne eine neue Manifest-Datei bilden zu müssen und somit den Class-Path neu anzugeben.Ohne einen eigenen ClassLoader zu verwenden: Nicht möglich. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.