[Tutorial] Jar-Archive erstellen und dieses signieren (Applet)

Dieses Thema im Forum "Programmier Tutorials" wurde erstellt von harry1526, 7. Februar 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 7. Februar 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    Jar-Archive erstellen und dieses signieren (Applet)

    Hi @ all,

    ich wollte mal hier ein Tut veröffentlichen, wie man eine jar-Archive erstellt und dieses dann signiert.

    Die Ordnerstruktur sieht wie folgt aus:
    Code:
    |------ bin
     |------ database.class
     |------ start.class
    |------ pic.gif
    |------ mysql-connector-java-5.1.7-bin.jar
    
    Der Ordner bin beinhaltet alle class-Dateien, die für das Projekt benötigt werden. Das jar-Arhcive mysql-connector-java-5.1.7-bin.jar ist für die Verbindung zu einer Datenbank und das pic.gif ist ein Bild, welches für das Applet benötigt wird.

    Nun wollen wir all diese Sachen zu einen Archive zusammenfügen. Wie kann man dies machen.
    Bevor wir das eigentliche jar-Archive erstellen können, müssen wir das andere erstmal entpacken.
    Dazu gehen wir in die Konsole und geben folgenden Befehl ein:
    Code:
    jar xf mysql-connector-java-5.1.7-bin.jar
    Wie man nun sieht, wurden weitere Ordner erstellt und zwar folgende: com, META-INF und org
    Code:
    |------bin
     |------ database.class
     |------ start.class
    |------ pic.gif
    |------ mysql-connector-java-5.1.7-bin.jar
    |------ com --> diese beinhalten noch weitere Unterordner
    |------ META-INF --> diese beinhalten noch weitere Unterordner
    |------ org --> diese beinhalten noch weitere Unterordner
    
    Jetzt haben wir alle Ordner, die wir nun zu einem jar-Archive zusammenfassen wollen. Mit dem folgenden Befehl in der Konsole erzeugen wir ein jar-Archive:
    Code:
    jar -cfv tester.jar bin\database.class bin\start.class grandhotel.gif com META-INF org
    HINWEIS
    Falls ihr den Hinweis bekommt, dass Windows diesen Befehl nicht kennt, dann müsst ihr den vollen Pfad angegeben. Die Tools befinden sich in dem Ordner jdkx.x.x_xx\bin\
    Für Windows unter C:\Programme\Java\jdkx.x.x_xx\bin\
    Für Vista unter "C:\Progam Files\Java\ jdkx.x.x_xx\bin\"


    Der Befehl ist wie folgt aufgebaut:
    • jar --> ist der Befehl zum erzeugen eines jar-Archive
    • -cfv --> c == create jar Archive f == jar-Achrive-Name ist mit angegeben v == verbose, dient zur Debugausgabe
    • tester.jar --> ist der Name des zuerstellenden jar-Archive
    • die weiteren Parameter sind die Klassen, welche man zu jar-Archive haben will


    Damit wäre die erste Aufgabe erledigt. Nun können wir dieses Applet testen. Wir legen uns dazu eine *.html-Datei an. Die folgenden Inhalt hat:
    Code:
    <html>
    <head>
    <title>Tester</title>
    </head>
    <body>
    Hier kann man noch was angegeben usw.<br>
    <applet code="bin.start.class" archive="tester.jar" width=800 height=800>
    Oops! Geht nicht mit diesem Browser.
    </applet>
    </body>
    </html>
    
    Uns interessiert nur die Zeile, mit dem Tag-applet. Der Parameter code gibt die Main-Class an. Archive ist logisch, das ist das Archive, welches wir uns gerade angelegt haben.
    Nun können wir die HTML-Datei öffnen und wie man sieht es „funktioniert“. Aber der Schein trügt. Denn wenn wir unsere Interaktion auslösen wollen, dann bekommen wir nichts angezeigt.
    Schauen wir uns mal den Output der Java-Console (im Firefox unter Extra  Java Console. Falls ihr es nicht habt, dann unter Java-Console herunterladen) an.

    {bild-down: https://www.xup.in/tn/2009_02/17345031.jpeg}


    In der ersten Zeile wird uns schon alles gesagt. Das Applet wird nicht richtig ausgeführt, da es nicht signiert worden ist und gegen die Sicherheitsrichtlinien verstößt. Somit müssen wir dies noch machen.
    Hierzu müssen wir als erstes ein Zertifikat erstellen, das mit folgenden Befehl wird dieses erstellt:
    Code:
     keytool -genkey -validity 365 -keyalg rsa -alias meinSchlüssel
    Der Parameter -validity 365 gibt, wie lange das Zertifikat gültig ist. Dieser wird in Tagen angegeben.
    Beim Ausführen des Befehls wird man nach verschiedenen Sachen gefragt, wie zum Beispiel Name, Organisation, Herkunftsland und weitere. Diese werden dann später angezeigt, wenn das Aplett ausgeführt wird.
    Danach exportiert man diese Werte in ein Zertifikat und zwar mit folgendem Befehl:
    Code:
    keytool -export -alias meinSchlüssel -file meinZerti.crt
    Das hat den Vorteil, wenn man mehrere jar-Archive mit dem gleichen Zertifikat signieren möchte.

    Jetzt kann man das jar-Archive signieren:
    Code:
    jarsigner tester.jar meinSchlüssel
    Um die Signierung zu überprüfen, lässt sich der jarsigner abermals mit veränderten Parametern verwenden:
    Code:
    jarsigner -verify -verbose -certs tester.jar

    HINWEIS
    Es kann passieren, dass während des signieren des Archives folgende Fehlermeldung auftritt:
    jarsigner: attempt to rename tester.jar to tester.jar.orig failed
    Dies bedeutet, dass das Archive von irgendeinem Prozess noch verwendet wird. Meistens hilft es, den Firefox zu schließen. ;-)

    Nun können wir das Applet erneut starten und als erstes kommt ein Bildschirm, der den User fragt, ob er das Applet ausführen darf.
    Wenn alles richtig gemacht worden ist, müssten auch alle Interaktionen ausgeführt werden.
    Falls es doch nicht geht, dann sollte man noch mal in der Java-Console nachschauen, ob es irgendeine Exception gibt.

    Viele Spaß damit!!!

    Quellen:
    Using JAR Files: The Basics (The Java&trade; Tutorials
    Deployment Packaging Programs in JAR Files)

    http://www.molehillrocker.com/tutorials/2-java-tutorials/3-signieren-einer-jar-datei
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.