# Eclipse: Applet-Projekt inkl. Ressourcen als JAR exportieren



## spross (27. Apr 2007)

Hallo Zusammen

Kleiner Überblick, wie das bei mir im Eclipse so aussieht:

- Projekt
-- bin
-- lib
-- src
-- .classpath
-- .project

Im "lib" Ordner befinden sich 4 JAR Files alle von JFreeChart, die ich zur Darstellung von Charts benötige.
Im "src" Ordner befindet sich meine Paketstruktur:

-- src
--- ch
---- firma
----- appname
------ charts
------ financial
------ gui
------ images
------ listeners
------ objectmodel
------ productinterfaces
------ products

Im "bin" Ordner befinden sich natürlich die kompilierte "Version", also nochmals die JARs und dann die Paketstruktur ab "ch".

Die eigentliche JApplet Klasse befindet sich im "gui" Ordner. Wenn ich diese über "Run as..." -> "Java Applet" im Appletviewer laufen lasse, ist alles bestens!

Jetzt möchte ich aber natürlich das Applet "deployen" und auf einer Website veröffentlichen. Und dabei habe ich Probleme. Zuerst mal, wie ich zur Zeit vorgehe:

1. Rechtsklick auf den Projektordner -> "Export..." -> "Java" -> "JAR file". Darin zeigt er mir folgende "resources to export":
- Projekt
-- src
-- lib

2. Die selektiere ich alle. Danach nocht "Export generated class files and resources" und unter Options: "Compress the contents of the JAR file" und "Add directory entries".

3. Exportieren. Nun hat er mir ein JAR File erstellt, welches alle kompilierten Klassen und Images enthält. OHNE die JFreeChart JARs.

Soweit so gut. Mit folgendem Applet Tag füge ich es auf im HTML ein:
	
	
	
	





```
<applet
code="ch.firma.appname.gui.Main.class"
archive="Appname_0_1.jar, jcommon-1.0.6.jar, jcommon-1.0.6-junit.jar, jcommon-xml-1.0.6.jar, jfreechart-1.0.3.jar"
width="1024"
height="768" 
alt="Struktis Java-Applet">
</applet>
```
Die erste Erkenntnis war, dass ich die JFreeChart JARs mit Komma getrennt aufführen muss.

Das einzige Problem, dass ich jetzt noch habe ist, dass er die Images nicht lesen kann.





> java.security.AccessControlException: access denied (java.io.FilePermission ch/firma/appname/images/logo.png read)
> at java.security.AccessControlContext.checkPermission(Unknown Source)
> at java.security.AccessController.checkPermission(Unknown Source)
> at java.lang.SecurityManager.checkPermission(Unknown Source)
> ...


Wieso braucht er dazu FilePermissions? Die Images befinden sich ja im JAR.
Vielleicht habe ich auch noch andere Grundsätzliche Fehler beim erstellen des Applets gemacht, aber es ist mein erstes Applet, das nicht nur aus einer Klasse besteht.

Vielen Dank für eure Hilfe!

Gruss Spross


----------



## Wildcard (27. Apr 2007)

Jar in Jar funktioniert sowieso nicht.
Entweder jar neben jar, oder jars entpacken und dann in die jar (geht auch automatisch mit dem fatjar Plugin).
Zu den Bildern:
Du musst Bilder aus jars über den Classloader laden:

```
getClass().getResource(...)
```


----------



## spross (3. Mai 2007)

übrigens noch danke  das mit FatJar ist edel! und die images funktionieren jetzt mit:
	
	
	
	





```
new ImageIcon(this.getClass().getClassLoader().getResource("ch/firma/appname/images/logo.png"))
```


----------

