[JAVA] class und manifest in jar bekommen
lima-city → Forum → Programmiersprachen → Java
anwendung
archiv
attribut
borland
catch
datei
endung
folgenden befehl
formen
gruss
import
inhalt
leerzeile
load
main
manifest
meldung
ordner
package
standart
-
Hallo, (puni;))
ich habe schon öfters versucht meine classdateien und mainifest in ein jar-archiv zu bekommen.
Aber es kam beim erstellen einer exe-datei immer ein Fehler.
Irgendetwas ist mit der Manifest-datei nicht in Ordnung....
Also habe ich (durch zufall) bei meinem JBuilder2 Standart diesen Exportmanager für jar Archive enddeckt.
Er erzeugt auch ein jar-archiv.
Denn ich dies dann mit jestart version 1.1 in eine exe-datei umformen will,
kommt keine Meldung.
Wenn ich die Datei öffne, kommt eine Meldung, die Manifestdatei wäre nicht in Ordnung.
Wie kann die die Jar-Datei notfalls von Hand erstellen?
Oder gibt es ein Programm, dass jar + exe in einem Schritt aus class macht? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Moin,
also ich kenne kein Programm, dass gleichzeitig eine .exe und
eine .jar aus Deinen Class-Dateien macht.
Eine JAR beinhaltet Deine zu verwendenen Dateien und die Manifest.
Du musst erst die Jar-Datei erstellen und danach diese für das Programm bereitstellen.
Ich selbst benutze für das Erstellen der Exe-Dateien das Programm JSmooth.
Erstellen einer JAR-Datei
1. Manifest-Datei erstellen:
Manifest-Version: 1.0
Main-Class: DeineStartKlasse
Leerzeile
Die Start-Klasse ist die Klasse, die die main-Methode enthält.
Sollte sich diese in einem Unterordner befinden, ersetzt Du die obere Zeile durch:
Main-Class: Unterordner.StartKlasse
Die Leerzeile ist ein MUSS! Also das Enter nicht vergessen am Ende!
Die Datei kannst Du als Manifest.txt abspeichern.
2. Das Archiv erstellen:
Konsole öffnen, in den Ordner wechseln wo die Manifest.txt liegt.
Folgenden Befehl zum Erstellen der Jar-Datei eingeben:
jar -cvfm meinjar.jar Manifest.txt StartKlasse.class
Dieses Beispiel ist nur für eine einzelne Klasse gedacht, die auch die main-Methode beinhaltet.
Wenn Du mehrere Klassen und noch andere Dateien für Dein Programm benötigst,
die auch noch in extra Packages liegen:
jar -cvfm meinjar.jar Manifest.txt -C meinPackage/*.class /
*.class steht als Platzhalter für alle Dateien, die auf .class enden.
Benötigt Dein Programm noch Bilder/Sound usw, dann musst Du *.class mit *.* ersetzen.
Das fügt dann alles hinzu, was in dem Ordner liegt.
Testen kannst Du es dann mit dem folgenden Befehl:
java -jar meinjar.jar
So ... wenn Du den Schritt fertig hast, reden wir über die EXE *g*
Gruss,
Puni
Beitrag geändert: 12.11.2006 0:32:15 von puni -
Hallo,
ich habe mal gelesen, dass manifest-Dateien die Endung MF haben müssen.
Ist die Endung egal?
meine manifestdatei werde ich (bestimmt) heute noch posten können. -
Moin,
nein, müssen nicht Manifest.mf heissen.
Das ist nur eine Richtlinie, keine Regel.
Gruss,
Puni -
Also, die Datei heißt MANIFEST.MF und liegt im Unterordner META-INF
Der Inhalt:
Manifest-Version: 1.0
Name: bravolister/bravoliste1.class
Java-Bean: True
Name: bravolister/bravolister.class
Java-Bean: True -
Moin,
nur mal so 'ne Frage: Womit hast Du die erstellt?
Die Manifest müsste die Struktur haben wie von mir beschrieben.
Jedenfalls, wenn Du aus Deinem Projekt eine ausführbare JAR-Datei erstellen willst.
Gruss,
Puni -
Hatte die Datei mit dem Exportmanager von JBuilder 2 Standart erstellt.
Dieser hat auch die Dateien kompiliert und in ein jar-archiv gepackt. -
Moin,
achso okay, dann ist das korrekt.
Meine Beschreibung gilt für den Fall einer manuellen JAR-Archivierung.
Funktioniert das JAR denn wenigstens, also ist es ausführbar?
Gruss,
Puni -
Moin,
das ist aber dann schon sehr sehr komisch,
ich habe die Archivierungsfunktion im JBuilder eher in guter Erinnerung.
Naja, hast Du mal versucht, das JAR nach meiner Anleitung zusammenzuschustern?
Gruss,
Puni -
Failed to load Main-Class manifest attribute form C:\Programme\JBuilder2\myclasses\test1.jar
Zeig doc mal wie die Main Deklaration im Manifest ist. Vielleicht steht das was falsches oder gar nichts. -
Was genau meinst du denn damit?
Den inhalt der manifest-datei?
Manifest-Version: 1.0
Name: bravolister/bravoliste1.class
Java-Bean: True
Name: bravolister/bravolister.class
Java-Bean: True -
as ist eben eine Java-Bean. Das ist falsch. Der Witz ist, dass du das so machst wie Puni sagte. DU musst ein normales Programm erstellen und keine Java-Bean! Ich kenn mich mit deinem Tool nicht so aus, aber in Eclipse kannst du das einstellen. Die Main-Class musst du dann auch abgeben
-
Also, das eben habe ich gar nicht verstanden.
Ich habe in JBuilder2 auch Anwendung und nicht Bean ausgewählt. -
Ein tipp lad dir mal exlipse oder Netbeans runter! Beides sind Kostenlos. Ich würde an deiner stelle eclipse nehmen :D.
kopierst deinen source code in einem vorhandenen projekt von eclipse oder netbeans. Dann läßt du es compilieren, danach läßt du in eclipse eine jar datei erstellen. in netbeans wird automatisch eine jar datei erstellt du mußt nur das manifest ändern sonst nichts.
MFG -
Also, ich habe mir mal eclipse runtergeladen...
Das Probelm ist nur, dass ist nicht weiß wie ich den Code von JBuilder in eclipse kopieren soll.....
JBuildercode:
JBuilder2:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import com.sun.java.swing.*;
import borland.jbcl.control.*;
import borland.jbcl.layout.*;
//import com.sun.java.swing.UIManager;
public class juhu extends JApplet {
boolean isStandalone = false;
BevelPanel bevelPanel1 = new BevelPanel();
TextControl textControl1 = new TextControl();
//Parameterwert holen
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//Das Applet konstruieren
public juhu() {
}
//Das Applet initialisieren
public void init() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}
//static {
// try {
// //UIManager.setLookAndFeel(new com.sun.java.swing.plaf.metal.MetalLookAndFeel());
// //UIManager.setLookAndFeel(new com.sun.java.swing.plaf.motif.MotifLookAndFeel());
// UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsLookAndFeel());
// }
// catch (Exception e) {}
//}
//Initialisierung der Komponente
private void jbInit() throws Exception {
this.setSize(400,300);
textControl1.setText("test");
this.getContentPane().add(bevelPanel1, BorderLayout.CENTER);
bevelPanel1.add(textControl1, new XYConstraints(115, 55, 113, 45));
}
//Applet-Information holen
public String getAppletInfo() {
return "Applet-Information";
}
//Parameter-Infos holen
public String[][] getParameterInfo() {
return null;
}
}
Code von eclipse (vorgegeben):
eclipse:
/**
*
*/
package test;
/**
* @author Administrator
*
*/
public class huju {
} -
wenn da steht Failed to load Main-Class Attribut, kann das auch heißen, dass du sowas wie eine ClasssNotFound-Exception fallen lässt, oder eine Libary fehlt.
-
Sorry, das habe ich nicht verstanden.
Meinst du, dass ich auf etwas zugreife,
was ich vorher nicht mit
import
eingefügt habe?
Kann eigentlich nicht sein, da JBuilder2 es alles nochmal überprüft, und kein Felher anzeigt.
Zudem kann ich auch auf "ausführen" gehen, und dann wird mir das Programm auch irgendwie über JBuilder nagezeigt, und ich kann es komplett benutzen, ohne das im Konsolenfenster eine Fehlermeldung erscheint. -
Moin (nach etwas längerer Abwesenheit),
schick mir Deine Klassen, ich bastel Dir mal das Archiv.
Werde ja dann sehen, was für Fehler kommen.
[EDIT]
Äh, versuchst Du das von Dir gezeigte Programm über ein JAR-Archiv zu starten
oder nur zu verwenden, z.B. für Webseitenintegration?
Weil Applets als JAR-Datei ausführen ist Humbug.
Gruss,
Puni
Beitrag geaendert: 28.12.2006 8:36:51 von puni -
Nein nein,
ich versuche das schon richtig als Anwendung auszuführen.
Nur wenn ich eine andere, als Applet erstellte class-Datei versuche mit <applet> einzubinden, geht es auch nicht, aber das ist ein anderes Problem...
Den Code schicke ich dir. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage