kostenloser Webspace werbefrei: lima-city


[JAVA] class und manifest in jar bekommen

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. p**i

    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
  4. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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.
  5. p**i

    Moin,

    nein, müssen nicht Manifest.mf heissen.
    Das ist nur eine Richtlinie, keine Regel.

    Gruss,
    Puni
  6. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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
  7. p**i

    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
  8. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Hatte die Datei mit dem Exportmanager von JBuilder 2 Standart erstellt.
    Dieser hat auch die Dateien kompiliert und in ein jar-archiv gepackt.
  9. p**i

    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
  10. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Das ist ja gerade der Witz....

    NEIN:biggrin:

    Es kommt immer folgende Meldung:

    Failed to load Main-Class manifest attribute form C:\Programme\JBuilder2\myclasses\test1.jar

    Die Meldung kommt übrigens nicht nur von meinem Computer.
  11. p**i

    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
  12. e********l

    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.
  13. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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
  14. d***********3

    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
  15. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Also, das eben habe ich gar nicht verstanden.
    Ich habe in JBuilder2 auch Anwendung und nicht Bean ausgewählt.
  16. 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
  17. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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 {

    }
  18. m*******4

    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.
  19. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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.
  20. p**i

    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
  21. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    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.
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!