Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
"Wie wird denn nun ein Applet richtig in eine HTML-Seite eingebunden?"
Diese Frage soll in den folgenden Beiträgen geklärt werden.
Mit der Verabschiedung des HTML 4-Standards wurde das Object-Tag eingeführt, mit dem einheitlich Media-Objekte in Webseiten eingebettet werden können.
Davor war das inzwischen veraltete, aber oftmals immer noch zu findende Applet-Tag für die Einbettung von Java-Applets in Webseiten vorgesehen.
Ich werde beide Tags näher beleuchten, empfehle aber die Verwendung des Object-Tags für die Einbindung von Java-Applets.
Sollte das Object-Tag nicht funktionieren kann das Applet-Tag, auch wenn es bereits veraltet ist, mal ausprobiert werden.
Applets sind keineswegs starre Konstrukte. Es können von außen durch Parameter Werte eingeschleust werden, die entweder statisch festgelegt oder dynamisch, bspw. mit PHP generiert wurden.
Applets können auch in einer Jar-Datei zusammengefasst und komprimiert werden, was einerseits die Übertragung verkürzt, andererseits bspw. zum Signieren von Applets erforderlich ist.
Manchmal benötigt man externe Bibliotheken, bspw. XML-Bibliotheken oder LookAndFeel's, die in einer Jar-Datei ausgeliefert werden. Mehrere Jar-Dateien werden im archive-Attribut mit Kommata getrennt aufgelistet.
"Ich habe eine Fehlermeldung, dass mein Applet nicht gefunden werden kann."
Oftmals treten diese Probleme im Zusammenhang mit verkehrt eingebundenen Applets auf.
Hier mal eine beispielhafte Fehlermeldung aus der Java-Console:
Laden: Klasse applets.HelloWorld.class nicht gefunden
java.lang.ClassNotFoundException: applets.HelloWorld.class
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Damit ein Applet im Browser angezeigt werden kann, wird vorzugsweise das Object-Tag in eine HTML-Seite geschrieben. Die allgemeine Notierung habe ich oben schon gezeigt. Dieses Tag verrät dem Browser, wo er das Applet finden kann und bittet ihn, für das Applet eine Fläche in der Größe der im Tag angegebenen Attribute bereit zu stellen.
Normalerweise werden Java-Klassen in Packages zusammen gefasst. Bei der Erzeugung des Applet-Tags gibts dann einige Dinge zu beachten. So muss nun auch der Name des Packages in das code-Attribut.
Das Applet deklariert ein hier ein Package applets, also muss die class-Datei im Verzeichnis applets liegen.
Die HTML-Datei muss oberhalb von applets, d.h. eine Verzeichnisebene über applets liegen.
Wenn das Applet nicht auf dem gleichen Rechner oder in einem anderen Verzeichnis (unabhängig von deklarierten Packages) wie die einbettende HTML-Datei liegt, kommt das codebase-Attibut ins Spiel.
Hier liegt die HTML-Datei in einem Verzeichnis über dem Verzeichnis example. In example liegt das Package-Verzeichnis applets und darin die class-Datei des Applets.
Jetzt liegt das Applet sogar auf einem ganz anderen Webserver, als die einbettende HTML-Datei.
Der Browser wird also angewiesen, das Applet von der im codebase-Attribut angegebenen URL zu laden.
Auch hier liegt das Applet wieder in einem Package applets.
Um die Übertragungszeit des Applets zu verkürzen und um die Klassen in Bibliotheken zusammen zu fassen werden größere Applets (wie oben bereits beschrieben) oft in Jar-Dateien verpackt.
Damit der Browser das Applet in der Jar-Datei findet, muss ihm das bekannt gemacht werden:
In diesem Beispiel befindet sich das Applet und alle noch benötigten Dateien und Klassen in einem Jar-Archiv namens MyAppletLib.jar. Das Jar-Archiv ist in dem im codebase-Attribut angebenen Verzeichnis relativ zur HTML-Datei gespeichert (Eine Verzeichnisebene tiefer, im Verzeichnis expamle). Würde bspw. das codebase-Attribut fehlen, müsste die Jar-Datei im Verzeichnis der HTML-Datei gespeichert sein.
Im Jar-Archiv existiert im Wurzelverzeichnis ein Package namens applets in welchem das Applet liegt.
In diesem Beispiel befindet sich das Applet und alle noch benötigten Dateien und Klassen in einem Jar-Archiv namens MyAppletLib.jar. Das Jar-Archiv ist an der im codebase-Attribut angebenen URL gespeichert. Im Jar-Archiv existiert im Wurzelverzeichnis ein Package namens applets in welchem das Applet liegt.
Oft kommt es vor, dass man neben seinem eigenen Jar-Archiv auch noch weitere oder fremde Archiv(e) einbinden möchte, weil man externe Klassen benutzt hat.
Mehrere Jar-Archive werden im archive-Attribut durch Kommata getrennt aufgelistet.
Beispiel:
Applets sind keineswegs starre Konstrukte. Es können von außen durch Parameter Werte eingeschleust werden, die entweder statisch festgelegt oder dynamisch, bspw. mit PHP generiert wurden.
Applets können auch in einer Jar-Datei zusammengefasst und komprimiert werden, was einerseits die Übertragung verkürzt, andererseits bspw. zum Signieren von Applets erforderlich ist.
Manchmal benötigt man externe Bibliotheken, bspw. XML-Bibliotheken oder LookAndFeel's, die in einer Jar-Datei ausgeliefert werden. Mehrere Jar-Dateien werden im archive-Attribut mit Kommata getrennt aufgelistet.
Das Applet-Tag hat noch weitere Attribute, die ich an dieser Stelle mal auflisten möchte:
Tag/Attribut|Zweck/Beschreibung <APPLET
| CODEBASE
| URL des Klassenverzeichnisses (optional) ARCHIVE
| ein Jar-Archiv oder eine Auflistung mehrerer Bibliotheken (optional) CODE
| Applet-Datei ...oder... OBJECT = ein serialisiertes Applet ALT
| alternativer Text, der angezeigt wird, wenn Java vom Browser nicht gestartet werden kann (optional) NAME
| Name der Applet-Instanz (optional) WIDTH
| Breite in Pixel HEIGHT
| Höhe in Pixel ALIGN
| Ausrichtung des Applets im vom Browser (HTML-Seite) bereitgestellten Platz (optional) VSPACE
| vertikaler Abstand in Pixel (optional) HSPACE
| horizontaler Abstand in Pixel (optional)
>|
<
PARAM NAME
= "Parametername"
VALUE
= "Wert"> | Zur Einschleusung von Werten ins Applet (optional)
. . . | HTML-Tags welche ausgeführt werden, wenn das APPLET-Tag vom Browser ignoriert wird </APPLET>
|
5. Praktische Beispiele zum Einbinden
"Ich habe eine Fehlermeldung, dass mein Applet nicht gefunden werden kann."
Oftmals treten diese Probleme im Zusammenhang mit verkehrt eingebundenen Applets auf.
Hier mal eine beispielhafte Fehlermeldung aus der Java-Console:
Laden: Klasse applets.HelloWorld.class nicht gefunden
java.lang.ClassNotFoundException: applets.HelloWorld.class
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Damit ein Applet im Browser angezeigt werden kann, wurde bis HTML 4 vorzugsweise das Applet-Tag in eine HTML-Seite geschrieben. Die allgemeine Notierung habe ich oben schon gezeigt. Dieses Tag verrät dem Browser, wo er das Applet finden kann und bittet ihn, für das Applet eine Fläche in der Größe der im Tag angegebenen Attribute bereit zu stellen.
Normalerweise werden Java-Klassen in Packages zusammen gefasst. Bei der Erzeugung des Applet-Tags gibts dann einige Dinge zu beachten. So muss nun auch der Name des Packages in das code-Attribut.
Das Applet deklariert ein hier ein Package applets, also muss die class-Datei im Verzeichnis applets liegen.
Die HTML-Datei muss oberhalb von applets, d.h. eine Verzeichnisebene über applets liegen.
Wenn das Applet nicht auf dem gleichen Rechner oder in einem anderen Verzeichnis (unabhängig von deklarierten Packages) wie die einbettende HTML-Datei liegt, kommt das codebase-Attibut ins Spiel.
Hier liegt die HTML-Datei in einem Verzeichnis über dem Verzeichnis example. In example liegt das Package-Verzeichnis applets und darin die class-Datei des Applets.
Jetzt liegt das Applet sogar auf einem ganz anderen Webserver, als die einbettende HTML-Datei.
Der Browser wird also angewiesen, das Applet von der im codebase-Attribut angegebenen URL zu laden.
Auch hier liegt das Applet wieder in einem Package applets.
Um die Übertragungszeit des Applets zu verkürzen und um die Klassen in Bibliotheken zusammen zu fassen werden größere Applets (wie oben bereits beschrieben) oft in Jar-Dateien verpackt.
Damit der Browser das Applet in der Jar-Datei findet, muss ihm das bekannt gemacht werden:
In diesem Beispiel befindet sich das Applet und alle noch benötigten Dateien und Klassen in einem Jar-Archiv namens MyAppletLib.jar. Das Jar-Archiv ist in dem im codebase-Attribut angebenen Verzeichnis relativ zur HTML-Datei gespeichert (Eine Verzeichnisebene tiefer, im Verzeichnis expamle). Würde bspw. das codebase-Attribut fehlen, müsste die Jar-Datei im Verzeichnis der HTML-Datei gespeichert sein.
Im Jar-Archiv existiert im Wurzelverzeichnis ein Package namens applets in welchem das Applet liegt.
In diesem Beispiel befindet sich das Applet und alle noch benötigten Dateien und Klassen in einem Jar-Archiv namens MyAppletLib.jar. Das Jar-Archiv ist an der im codebase-Attribut angebenen URL gespeichert. Im Jar-Archiv existiert im Wurzelverzeichnis ein Package namens applets in welchem das Applet liegt.
Oft kommt es vor, dass man neben seinem eigenen Jar-Archiv auch noch weitere oder fremde Archiv(e) einbinden möchte, weil man externe Klassen benutzt hat.
Mehrere Jar-Archive werden im archive-Attribut durch Kommata getrennt aufgelistet.
Beispiel: