ShamaN Geschrieben 12. März 2009 Geschrieben 12. März 2009 (bearbeitet) obwohl es sich hunderte seiten von google darüber finden lassen schaffe ich es mit deren hilfe nicht so eine verdammte datei zu erstellen... also wenn ich über export-> runable jar file eine solche datei erstellen möchte dann kommt der fehler: jar creation failed. see details for additional information. die details sind: "unable to open zip file unable to open zip file" wenn ich jetz über export-> jar file es versuche, zudem die manifest.txt einbinde: "Manifest-Version: 1.0 Main-Class: asdf.main" asdf ist das package, main die klasse zum starten mit abschließendem zeilenumbruch bekomme ich beim starten einen fehler. ich rufe meine jar datei mit der folgenden verknüpfung auf: C:\WINDOWS\system32\java.exe -jar "C:\Dokumente und Einstellungen\asd\workspace\Datenbank-Vorgang\run.jar" der Fehler lautet: "unable to access jar file" und dann der pfad wenn ich die manifest.txt auf main.asdf statt asdf.main ändere, dann erscheint die meldung: "Failed to load Main-Class manifest attribute from" und dann der pfad Bearbeitet 12. März 2009 von ShamaN Zitieren
flashpixx Geschrieben 12. März 2009 Geschrieben 12. März 2009 also wenn ich über export-> runable jar file eine solche datei erstellen möchte dann kommt der fehler: jar creation failed. see details for additional information. die details sind: "unable to open zip file unable to open zip file" Wo "export"? Bitte genauer beschreiben. Du kannst über "jar cf" die jar-Datei aus der Konsole erstellen, mache es zuerst via Konsole Phil Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 (bearbeitet) mit rechtsklick auf das projekt->export kannst du mir des mit der konsole genauer erklären? ich hab jar cmf Manifest.txt run.jar bin\asdf im Verzeichnis des Projektes angegeben und es wird mir gesagt dass der befehl jar nicht gefunden werden konnte Bearbeitet 12. März 2009 von ShamaN Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 (bearbeitet) jetzt funktioniert der jar befehl, allerdings kommt beim starten: Exception in thread "main" java.lang.NoClassDefFoundError: asdf/main Caused by: java.lang.ClassNotFoundException: asdf.main at java.netURLClassLoad$1.run<Unknown Source> at java.security.AccessController.doPrivileged<Native Method> at java.net.URLClassLoader.findClass<Unknown Source> at java.lang.ClassLoader.loadClass<Unknown Source> at sun.mist.Launcher$AppClassLoader.loadClass<Unknown Source> at java.lang.ClassLoader.loadClass<Unknown Source> at. java.lang.ClassLoader.loadClassInternal<Unknown Source> mit dem befehl werden allerdings die ganzen eingebundenen jar dateien auch nicht mit in die neue datei einbezogen... Bearbeitet 12. März 2009 von ShamaN Zitieren
Dragon8 Geschrieben 12. März 2009 Geschrieben 12. März 2009 mit rechtsklick auf das projekt->export Um das zu verstehen, wäre ja mal allgemein interessant welches Programm du dafür benutzt. Zitieren
flashpixx Geschrieben 12. März 2009 Geschrieben 12. März 2009 mit rechtsklick auf das projekt->export Sorry, aber wäre es zu viel verlangt, wenn Du die IDE nennst mit der Du arbeitest und nicht irgendwelche Aktionen nennst, die Du durchführst! Ich benutze XCode unter OSX und erzeuge meine Jars via Konsole. ich hab jar cmf Manifest.txt run.jar bin\asdf im Verzeichnis des Projektes angegeben und es wird mir gesagt dass der befehl jar nicht gefunden werden konnte Dann solltest Du Deine Pfadumgebungsvariable prüfen und ggf. ergänzen Zur Info: Java Archive ? Wikipedia Nimm einmal Deine erzeugte Datei, ändere den Datei Typ in Zip und entpacke sie. Schau dann in die Manifestdatei und überprüfe, ob der Aufruf zu Deiner Startklasse inkl Package korrekt ist Phil Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 meien jar datei enthält den ordner bin, mit dem unterordner asdf, in der sind meine 14 klassen gelistet, inklusive main.class. Außerdem enthält sie noch META-INF mit der der Datei MANIFEST.MF, welche die folgendes enthält: "Manifest-Version: 1.0 Created-By: 1.6.0_12 (Sun Microsystems Inc.) Main-Class: asdf.main" Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 mit dem befehl werden allerdings die ganzen eingebundenen jar dateien auch nicht mit in die neue datei einbezogen... Ja, das macht Eclipse. Übrigens hab ich spaßeshalber auch mal nen Test bei 2 Projekten von mir gemacht. Bei einem großen mit diversen externen LIBs kommt dieselbe Fehlermeldung. Bei einem kleinen Testprojekt gehts wie erwartet. Ich hab dann die JAR vom großen Projekt mal angeguckt (ist ja auch nur ne ZIP-Datei). Konnte aber keinen Fehler finden?! Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 meien jar datei enthält den ordner bin, mit dem unterordner asdf, in der sind meine 14 klassen gelistet, inklusive main.class. Außerdem enthält sie noch META-INF mit der der Datei MANIFEST.MF, welche die folgendes enthält: "Manifest-Version: 1.0 Created-By: 1.6.0_12 (Sun Microsystems Inc.) Main-Class: asdf.main" Das kann sowieso nicht gehen! Denn, wenn das korrekt ist, dass in der JAR-Datei der Pfad zur Main-Class /bin/asdf/Main.class ist, dann ist in der Manifest das Main-Class falsch oder Du setzt in der Manifest Class-Path: bin Beispiel, wenn kein bin Ordner: Manifest-Version: 1.0 Class-Path: . Main-Class: asdf.Main Beispiel mit bin Ordner: Manifest-Version: 1.0 Class-Path: bin Main-Class: asdf.Main Vielleicht ist es das ja schon. Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 ok, danke, das programm funktioniert nun, aber die eingebundenen JAR´s wie mysql-connector-java-5.1.7-bin.jar, iText-2.1.5.jar, iText-rtf-2.1.5.jar und iText-rups-2.1.5.jar tun jetzt nichmehr, wie verweis ich denn jetz auf die? die liegen im selben ordner wie meine jar. Zitieren
flashpixx Geschrieben 12. März 2009 Geschrieben 12. März 2009 Jar in Jar macht man nicht. Nimm sie mit den Classpath auf Phil Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 (bearbeitet) und wie? ^^ Manifest-Version: 1.0 Created-By: 1.6.0_12 (Sun Microsystems Inc.) Class-Path: . .iText-2.1.5.jar .iText-rtf-2.1.5.jar .iText-rups-2.1.5.jar .mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar Main-Class: asdf.main ...? Bearbeitet 12. März 2009 von ShamaN Zitieren
ShamaN Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 ah, jetz hab ich´s Class-Path: . .\iText-2.1.5.jar .\iText-rtf-2.1.5.jar .\iText-rups-2.1.5.jar .\mysql-connector-java-5.1.7/mysql-connector-java-5.1.7-bin.jar wo ich gerade nen thema offen hab, ich hab noch nen völlig anderes problem ^^ ich lese ein JTextArea mit automatischem zeilenumbruch aus und speichere es in eine textdatei, dabei entstehen kleine eckige zeichen bzw. manchmal auch leerzeilen, die wohl einer enter-taste entsprechen. Das ganze ist dann beim zeilenweisen auslesen recht hinderlich, kann ich diese formatierungen beim schreiben entfernen? Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 wo ich gerade nen thema offen hab, ich hab noch nen völlig anderes problem ^^ pfui, sowas macht man nicht ich lese ein JTextArea mit automatischem zeilenumbruch aus und speichere es in eine textdatei, dabei entstehen kleine eckige zeichen bzw. manchmal auch leerzeilen, die wohl einer enter-taste entsprechen. Das ganze ist dann beim zeilenweisen auslesen recht hinderlich, kann ich diese formatierungen beim schreiben entfernen? Mach einen neuen Thread auf und poste den code, wie du das speicherst. Ich vermute Du speicherst Deinen string.getBytes() direkt in die Datei. Für sowas gibts zum Beispiel Codierungen. Siehe das package New-IO. Zitieren
ShamaN Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 Soo, auf mein Windows läuft das Programm mit der jar wunderbar, aber auf einem Mac gibts Probleme. Es wirft beim Verbinden mit einer MySql Datenbank eine ClassNotFoundException aus mit dem Inhalt "com.mysql.jdbc.Driver". Wieso funktioniert das auf einem Mac nicht? Zitieren
flashpixx Geschrieben 13. März 2009 Geschrieben 13. März 2009 Wieso funktioniert das auf einem Mac nicht? Weil er die Klasse nicht findet, du musst sie in Classpath aufnehmen Phil Zitieren
ShamaN Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 Dann dürfte es doch aber auf einem Windows auch nicht funktionieren? Zitieren
kingofbrain Geschrieben 13. März 2009 Geschrieben 13. März 2009 Wenn es unter Windows funktioniert, dann stimmt der Classpath dort. Wir wissen nicht, welche Bibliotheken bei Dir auf welchem System in welchem Classpath sind. Wenn es nicht funktioniert, ist der Hinweis von flashpixx der einzig Richtige. Peter Zitieren
flashpixx Geschrieben 13. März 2009 Geschrieben 13. März 2009 Der Classpath ist eine Umgebungsvariable des jeweiligen Systems, der bei jedem System unterschiedlich sein kann. Das "java" Kommando enthält aber auch den Parameter "-cp", womit der Classpath per Hand gesetzt werden kann. "-cp" überschreibt und ergänzt nicht die Umgebungsvariable, d.h. bei "-cp" muss auch der Pfad zu den von Sun mitgelieferten Bibliotheken gesetzt werden Phil Zitieren
ShamaN Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 ah ok, ich hatte bachslashes anstatt slashes benutzt, dass das jetzt mit slashes auch unter windows funktioniert ist normal? Zitieren
kingofbrain Geschrieben 13. März 2009 Geschrieben 13. März 2009 Ja, mit Java kannst Du Slashes auf beiden Systemen verwenden. Peter 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.