# Applet mit mehreren Paketen und Bild/Ton-Ordnern in Browser



## krotzen (28. Mai 2007)

Hallo!

Ich habe hier ein Applet, welches mit Eclipse problemlos gestartet werden kann.
Doch leider klappt das mit dem Einbinden in eine HTML-Seite nicht.
Kann mir da mal jemand beim richtigen Inhalt des <applet>-Tags behilflich sein?

Es gibt für dieses Applet 2 Packages, nennen wir sie view und model. In view liegt die zu startende Klasse (z.B. "start.class"), in model befinden sich vier weitere benötigte Klassen, nennen wir sie einfach 1, 2, 3 und 4. Außerdem existieren 2 Verzeichnisse mit Bildern bzw. Sounds, namens "icons" und "sounds".

Muss/kann ich das ganze Paket vielleicht auch in ein jar packen, bzw. geht es so einfacher?
Oder reicht es, alles in ein Online-Verzeichnis zu kopieren und entsprechend eine HTML-Datei anzulegen, die das hinbekommt?

Bin leider ein Anfänger in dieser Angelegenheit... aber ich habe bisher keine Anleitung gefunden, mit der ich was anfangen konnte. Daher wollte ich das hier mal versuchen  :roll: 

Versucht habe ich es z.B. hiermit:

```
<applet codebase="./view/" code="start.class" width="500" height="500">
	APPLET
</applet>
```

Es kommt laut Konsole dann folgende Meldung:

```
java.lang.NoClassDefFoundError: start (wrong name: view/start)
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	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)
```

Aber vermutlich ist das nicht das einzige Problem bei der Sache. Wäre froh über eine zeitnahe Meldung!  :wink: 

Danke schon mal im voraus!

Krotzen


----------



## L-ectron-X (30. Mai 2007)

Egal, ob du dich nun für das Verpacken in eine Jar-Datei oder nur das Kopieren in ein Online-Verzeichnis entscheidest, muss der Aufruf der gleiche sein. Er unterscheidet sich nur darin, ob ein Jar-Archiv angegeben wird oder nicht.


```
<applet archive="MeinJar.jar" code="view.start.class" width="500" height="500"> 
   Bitte Java aktivieren! 
</applet>
```


```
<applet code="view.start.class" width="500" height="500"> 
   Bitte Java aktivieren! 
</applet>
```


----------



## Guest (4. Jun 2007)

Danke für die Antwort!

Ich habs auch gleich mal so versucht, jedoch bekomme ich nun reichlich weitere Fehlermeldungen in der Konsole...


```
java.lang.ExceptionInInitializerError
	at view.start.<init>(start.java:44)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(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)
Caused by: java.security.AccessControlException: access denied (java.io.FilePermission icons/banditIcon.gif 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 javax.swing.ImageIcon.<init>(Unknown Source)
	at javax.swing.ImageIcon.<init>(Unknown Source)
	at model.Bandit.<clinit>(Bandit.java:59)
	... 12 more
```

Besonders verwirrend finde ich die AccessControlExceptions. Jedenfalls habe ich bei allen Datei-Attributen Vollzugriff eingestellt (777), sowohl bei den Ordnern als auch bei den einzelnen Dateien.

Bei der ersten Fehlermeldung (java.lang.ExceptionInInitializerError at view.start.<init>(start.java:44)) wird in der angegebenen Zeile auf eine andere Klasse zugegriffen, die sich im Paket model befindet. Eine neue Instanz wird hier erzeugt. Hängt vermutlich auch mit Zugriffsberechtigungen zusammen... schließlich hat es in Eclipse ja geklappt.

Übrigens: Ich hab nach der Fehlermeldung mal die Seite im gleichen Browserfenster (IE7) neu geladen und dann ändert sich die Fehlermeldung, bzw. es kommt eine neue:


```
java.lang.NoClassDefFoundError: Could not initialize class model.Bandit
	at view.start.<init>(Applet_Start.java:44)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(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)
```
Es geht also wieder um die gleiche Stelle in der start.class wie oben, aber die AccessControlException wird nicht erneut ausgegeben.

Gibt's noch irgendwelche Tipps, mit denen ich möglicherweise was geradebiegen könnte?  ???:L[/code]


----------

