# java applet kann auf jar nicht zugreiffen



## cryptic (23. Aug 2005)

Hallo,

ich habe das ganze forum wegen diesem Problem durchgesucht, aber nichts finden können was mir geholfen hat. Zu meinem Problem: ich habe ein Java Applet, das Klassen aus einer JAR Datei benötigt. Die JAR Dateien liegen auch in dem Verzeichnis, in dem das Applet liegt. Irgendwo habe ich gelesen, dass man eine "codebase" im HTML setzen kann. Als codebase habe ich das Verzeichnis angegeben, in dem sich die JAR Datei befindet.

Vielen Dank für Hilfe!


----------



## L-ectron-X (23. Aug 2005)

Poste bitte mal den HTML-Code deines Applet-Tags.


----------



## lyrics (24. Aug 2005)

Hatte das gleiche Problem.

Ob das mit Codebase funktioniert weiss ich nicht, jedoch kannst du kurzfristig den wegumgehen indem du das Package im Applet Tag mit einbindest, oder das Package einfach in das Verzeichnis entpacken. Ist zwar nicht die sauberste Lösung, jedoch kannst du erstmal weiter arbeiten. Vorteil dabei wäre dann auch das nicht das ganze Package übertragen wird.


----------



## cryptic (24. Aug 2005)

Hier der HTML-Code:


```
<html><body>
<applet 
codebase="/home01_phys/caesar/Nsili_new/lib"
code="appltest.class" width=320 height=200
archive="Visco.jar"
archive="IITBClient.jar"
></applet>
</body></html>
```

Ich bekomme immer eine null Pointer exception.


----------



## L-ectron-X (24. Aug 2005)

Mehrere jar-Archive werden im archive-Attribut durch Komma getrennt aufgelistet.
Probiere es mal so:

```
<html>
  <body> 
    <applet codebase="/home01_phys/caesar/Nsili_new/lib" 
      code="appltest" width=320 height=200 
      archive="Visco.jar,IITBClient.jar">
    </applet> 
  </body>
</html>
```
Die NullPointerException zeigt an, dass dein Applet bereits gestartet wurde, aber ein Objekt nicht referenziert werden konnte. Das hängt vermutlich mit dem archive-Attribut zusammen.


----------



## cryptic (25. Aug 2005)

Nein, funktioniert leider auch nicht. Kann es am Applet selbst liegen? Das Applet ruft eine Swing Anwendung auf. Könnte das das Problem sein? Kann ich durch ein Applet eine Swing Anwendung starten?


----------



## Sky (25. Aug 2005)

hast du eine Package-Struktur ?

Dann z.B. code="de.meinPackage.appltest"


----------



## L-ectron-X (25. Aug 2005)

Wie startest du die Anwendung? Man kann aus einem Applet heraus auch Fenster öffnen.
Schau mal nach, wo die NullPointerException geworfen wird.


----------



## cryptic (25. Aug 2005)

Ich habe das Applet mal als normales Programm mit ner void main() Methode ausprobiert, das funktioniert einwandfrei. Ich habe aber kein "package de.irgendwas" am Anfang des Programmes stehen, falls Du das mit Package Struktur meinst. In den JARs sind aber Pfade in der Form "de.irgendwas/iitb/util" enthalten.


----------



## Guest (25. Aug 2005)

Wie finde ich heraus wo die NullPointerExecption ausgelöst wird? Ich vermute mal das das in einer anderen Klasse passiert. Wenn ich den Aufruf eines Objektes einer anderen Klasse auskommentiere, gibts keine Fehlermeldung.


----------



## L-ectron-X (25. Aug 2005)

Wie du herausfindest, wo eine NullPointerException geworfen wird?
Du weißt doch bereits, dass eine geworfen wird. Guck dir die Interpreter-Ausgabe (in der Java-Console bei Applets, in der Console bei eine Applikation) an, da steht wo.
package.Klasse.methode() Zeile


----------



## cryptic (26. Aug 2005)

Also den Code habe ich im Netbeans geschrieben, aber ich habe es nicht geschafft das Applet über Netbeans zu starten. Deshalb öffne ich es immer mit Mozilla.  Habe jetzt aber mal Eclipse benutzt, und damit das Applet gestartet. Funktioniert wunderbar. Er öffnet die Swing Applikation im neuen Fenster, genau so wie ich es haben will. Aber wie gesagt, sobald ich es im Mozilla öffne gibts Probleme. Liegt das vielleicht an der HTML-Datei, die das Applet aufruft?

<html><body>
<applet 
code="de.irgendwas.appltest.class" width=320 height=200
></applet>
</body></html>


----------



## L-ectron-X (26. Aug 2005)

Hm ja, das mit Packages in Applets war bei mir auch immer etwas tricky...
Versuche mal im Applet die Package-Deklaration zu entfernen und das Applet mit angepasstem Applet-Tag zu starten.


----------



## cryptic (26. Aug 2005)

Hab ich grade versucht, aber nutzt leider nichts. Wie gesagt, in Eclipse läuft das Applet wunderbar. Hab jetzt alles mögliche ausprobiert, die JARs entpackt, das Applet in dem Verzeichnis erstellt in dem auch die ganzen benötigten Klassen sind usw.


----------



## L-ectron-X (26. Aug 2005)

Poste doch mal die Fehlermeldungen.


----------



## cryptic (26. Aug 2005)

Java Plug-in 1.5.0_04
Verwendung der JRE-Version 1.5.0_04 Java HotSpot(TM) Client VM
Home-Verzeichnis des Benutzers = /home01_phys/caesar


----------------------------------------------------
c:   Konsolenfenster schließen
f:   Objekte in Finalisierungswarteschlange finalisieren
g:   Speicherbereinigung
h:   Diese Hilfemeldung anzeigen
l:   ClassLoader-Liste ausgeben
m:   Speicherbelegung anzeigen
o:   Protokollierung auslösen
p:   Proxy-Konfiguration neu laden
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
----------------------------------------------------

Visco does not seem to be available, ViscoIITBController.initController java.lang.ExceptionInInitializerError
java.lang.NullPointerException
	at de.fraunhofer.iitb.IITBClient.IITBVisco.ViscoIITBController.initViscoModul(ViscoIITBController.java:216)
	at appltest.start(appltest.java:33)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


Es sieht so aus als ob er sich verabschiedet sobald er ein Swing Fenster aufmachen soll.


----------



## L-ectron-X (26. Aug 2005)

Diese beiden Codezeilen bzw. den Code in der Nähe dieser Zeilen, solltest du dir mal näher ansehen:

at de.fraunhofer.iitb.IITBClient.IITBVisco.ViscoIITBController.initViscoModul(ViscoIITBController.java:216) 
at appltest.start(appltest.java:33)


----------

