ich denke auch es liegt am Byte-Order-Mark.
Einfach mal die Datei im Windows-Notepad oeffnen, das sollte dir dann schon ein paar komische Zeichen am Anfang anzeigen
Manifest Dateien müssen mMn plain ASCII sein, also einfach die Datei nicht als UTF8 speichern.
Habe die Datei im Editor geöffnet. Da stehe keine Zeichen vornedran.
Ich habe das Tutorial von Sun durchgelesen. Von da habe ich auch das mit dem UTF8. Wenn ich es normal speichere unter ANSI, dann wird die manifest erstellt aber beim ausführen sagt er, er finde die main calss nicht. Ich habe aber die Main class in der Manifest angegeben.
Das problem ist, ich arbeite mit Netbeans. Wenn ich ein Build mache erstellt er mir automatisch ne Manifest.
Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.6.0_01-b06 (Sun Microsystems Inc.)
Main-Class: spulenberechnung.Main
Class-Path: lib/AbsoluteLayout.jar
X-COMMENT: Main-Class will be added automatically by build
So sieht das ganze aus. Ich wollte aber mal ausprobieren, ob ich auch ohne netbeans über die Konsole eine startbare .jar Datei hinbekomme. Ich möchte die Datei verteilen und sie soll ohne .bat oder Konsole Startbar sein.
Vermutlich, weil du in mindestens einer Klasse die externe Libary nutzt.
Und zwar handelt es sich hierbei um das AbsolutLayout, einen LayoutManager, der nicht in der Standard-Java-Bibliothek enthalten ist. Das AbsolutLayout ist aber standardmäßig bei NetBeans dabei.
Wahrscheinlich hast du damit deine Komponenten positioniert, daher wird es auch von NetBeans eingebunden.
ja du hast recht, in den Projekt properties ist die externe .jar drinn. Ich habe den Designer von Netbeans benutzt um meine Masken zu erstellen. Das ist mein erstes GUI projekt und ich wusste recht wenig von SWING usw. Ich wollte es recht einfach haben.
Aber warum steht die AbsoluteLayout.jar in der Manifest als Classpath. Das verstehe ich nicht. Ich dachte die Classpath sthet für den Classenordner wo die Klassen alle drinne sind ?!.? ???:L
Also ich habe ein Ordner Prgramm, da liegen der Ordner
lib ---> hier liegt die AbsoluteLayout.jar drinn
und
MyProgie.jar
In MyProgie.jar sind der Ordner
META-INF ----> hier ist die MANIFEST drinn
MeinPackage ---> und hier die Klassen
Code:
Class-Path: lib/AbsoluteLayout.jar
sagt ihm diese Zeile etwa aus, dass er im übergeordneten Ordner nach lib sucen muss? Und woher weiß er, dass er im untergeordneten Ordner MeinPackage nach den .class Dateien suchen muss?
Wäre echt nett von dir, wenn du mir das kurz erklärst. Hab schon die FAQ gelesen aber ich möchte es verstehen.
Genau. Der Interpreter erhält mit der Angabe des Classpaths die Information darüber, wo er nach weiteren Klassen/Bibliotheken suchen muss, wenn sie benötigt werden. Informationen über das AbsoluteLayout erhält er dann über deren Manifest, bzw. über die Package-Deklarationen in deinem Code.
vladoo hat gesagt.:
Und woher weiß er, dass er im untergeordneten Ordner MeinPackage nach den .class Dateien suchen muss?
Diese Information erhält der Compiler aus deiner Package-Deklaration im Quellcode und der Interpreter aus dem Main-Class-Attribut in deiner Manifest-Datei.