# Jar File in Website einbinden



## fjk88 (4. Apr 2010)

Ich habe ein kleines Tool geschrieben, dass ich nun auf einer Website veröffentlichen will.
ähnlich wie auf der folgenden seite, nur eben mit meinem programm: 
Reflexion und Brechung von Licht

soweit ich informiert bin, kann man applets in html seiten einbinden.

mein derzeitiges programm ist ein herkömmliche windows anwendung, sprich von JFrame abgeleitet.
es besitzt mehrere JPanels, die zu dem Fenster hinzugefügt werden.

kann man auch Jar dateien einbinden, oder müssen es zwingend applets sein?

aus der einbauanleitung von selfhtml werde ich auch nicht schlau:
SELFHTML: HTML/XHTML / Multimedia / Java-Applets einbinden (herkömmlich)

[XML]<applet code="HexColor.class"[/XML]
wie bereits beschrieben, mein programm besteht aus mehreren classen, wie soll ich die also einbinden?

wie erstellt man generell ein applet?


----------



## Murray (4. Apr 2010)

Sieh dir das mal an; dort sind die Grundlagen und die häufigsten Fallstricke beschrieben.


----------



## L-ectron-X (4. Apr 2010)

fjk88 hat gesagt.:


> wie erstellt man generell ein applet?


Ein Applet hat im Gegensatz zu einer Applikation keine main()-Methode.
Statt dessen muss es von Applet bzw. JApplet erben und mindestens die init()-Methode überschreiben.
Natürlich kannst du auch Jar-Dateien einbinden. Wie das geht, steht auch in Murray's Link. Aber trotzdem brauchst du mindestens ein Applet, um dein Programm auf einer Webseite zu starten. 
Am Einfachsten ist das, wenn du in deiner Anwenung deine GUI-Komponenten irgendwo auf einem einzigen Haupt-Panel zusammengeführt hast. Dann kannst du dieses Panel einem Applet oder einem Frame hinzufügen. Wie das geht habe ich auch schon mal hier im Forum gezeigt -> Forumsuche.
Alternativ kannst du deine Anwendung zu einer Webstart-Anwendung machen.


----------



## fjk88 (4. Apr 2010)

ich habe mir das ganze einmal durchgelesen und selber ausprobiert.

soweit ich das verstanden habe, muss ich anstatt extends JFrame einfach extends Applet schreiben.
beim REBUILDEN stell ich einfach von Application auf Applet um und geb die main class (also die Klasse in der extends Applet steht) an.

danach schreibe ich mir eine einfache html datei

[XML]
<html>
<applet code="packagename.Fenster.class" width=500 height=400> </applet>
</html>

[/XML]

die html datei habe ich in einem ordner testApplet abgespeichert. hinzu kommt ein ordner packagename. in diesem sind alle .class dateien.
wenn ich nun das ganze im firefox ausführen will, bekomm ich die meldung: fehler, klichen sie, um weitere informationen zu erhalten

Java Plug-in 1.6.0_19
Verwendung der JRE-Version 1.6.0_19-b04 Java HotSpot(TM) Client VM
----------------------------------------------------
c:   Konsole löschen
f:   Objekte in Finalisierungswarteschlange finalisieren
g:   Speicherbereinigung
h:   Diese Hilfemeldung anzeigen
l:   ClassLoader-Liste ausgeben
m:   Speicherbelegung anzeigen
o:   Protokollierung auslösen
q:   Konsole ausblenden
r:   Richtlinien-Konfiguration neu laden
s:   System- und Bereitstellungseigenschaften ausgeben
t:   Threadliste ausgeben
v:   Thread-Stack ausgeben
x:   ClassLoader-Cache löschen
0-5: Trace-Stufe auf <n> setzen
----------------------------------------------------
java.security.AccessControlException: access denied (java.io.FilePermission feld.png read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkRead(Unknown Source)
	at sun.awt.SunToolkit.getImageFromHash(Unknown Source)
	at sun.awt.SunToolkit.getImage(Unknown Source)
	at aufstellungsassistent.SpielFeld.<init>(SpielFeld.java:45)
	at aufstellungsassistent.Fenster.init(Fenster.java:29)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Ausnahme: java.security.AccessControlException: access denied (java.io.FilePermission feld.png read)


feld.png ist eine Grafik, die ich im meinem Hauptpanel zeichne und in der Applet Class hinzufüge.



Alternativ kannst du deine Anwendung zu einer Webstart-Anwendung machen. 

was ist damit gemeint?


----------



## L-ectron-X (4. Apr 2010)

Wenn du mit Swing-Komponnten arbeitest musst du von JApplet erben.

Die AccessControlException bekommst du, weil du das Bild nicht für Applets sondern für Applikationen einbindest. Du greifst wahrscheinlich auf die Verzeichnisebene des Clients zu, was Applets ja verboten ist.
In Applets werden externe Resourcen oftmals über URLs eingebaut. 
Zum Laden von Bildern in Swing gibts die sehr effiziente Klasse javax.image.ImageIO.
Beispiel: Grafikdateien laden und anzeigen - Byte-Welt Wiki
Auch dazu gibts im Forum ausreichend Beispielcode. (Forumsuche)

Zu Webstart: Java Web Start ? Wikipedia


----------

