# Applet funktioniert im Browser nicht immer



## Ivo (24. Apr 2004)

Hallo an alle
ich habe eine Java-Applikation so umgeschrieben, dass sie von einem Applet aus durch Anklicken eines Buttons gestartet wird. Nun läuft das Applet wunderbar im Appletviewer und auch nach Aufrufen der HTML-Seite im Browser. Wenn ich aber die HTML-Seite und die jar-Datei in einem eigenen Ordner z.B. auf den Desktop kopiere, so wird im Browser nur den Hintergrund des Applets gezeichnet und nachher läuft nichts mehr. Kopiere ich statt dessen den Ordner in einen anderes Verzeichnis, so läuft alles wieder (wenigstens bei den paar Verzeichnissen, bei denen ich es probiert habe). Ich habe das Applet dann verschiedenen Kollegen geschickt, aber bei allen hat es nicht funktioniert. Woran könnte das liegen?


----------



## L-ectron-X (26. Apr 2004)

Liegt Dein Applet in einem extra Verzeichnis/Package?


----------



## Guest (27. Apr 2004)

Also, ich habe mein Applet in einem normalen Verzeichnis gespeichert als ich ihn mit JCreator erstellt habe. Nach dem Kompilieren und Speichern erstellt JCreator ein Verzeichnis mit dem Appletnamen und darin einige JCreator-Dateine (Projekte usw.) und 2 Ordner "classes" (mit den Klassen und dem html-File) und "src" (mit dem java-File).Dann habe ich eine jar-Datei gemacht. Diese wird auch im Ordner "classes" abgelegt.
Schliesslich habe ich einen neuen Ordner mit dem Appletnamen an einem anderen Ort auf der Festplatte erstellt und darin eine Kopie des html-Files und des jar-Files abgelegt.
Kopieren ich nun diesen Ordner auf den Desktop, so laüft das Applet im Browser nicht. An anderen Orten auf der Festplatte läuft hingegen das Applet. Ich habe dann Kopien des Ordner mit dem html- und dem jar-File verschiedenen Bekannten geschickt, aber bei ihnen läuft das Applet auch nicht.
Habe ich damit deine Frage beantwortet?


----------



## L-ectron-X (27. Apr 2004)

Ich hoffe, ich habe das jetzt richtig nachvollzogen.
Du kopierst die JAR-Datei, die HTML-Datei und die CLASS-Datei in einen Ordner mit dem Namen des Applets.
Dein JCreator legte aber das kompilierte Material in einen Ordner namens "classes", der wiederum in einem Ordner mit dem Namen des Applets liegt.
Ich vermute, dass die Pfadangabe in der HTML-Datei nicht zu Deiner Ordnerstruktur passt.
Wenn Du Dich damit nicht so auskennst, poste doch bitte mal den Quellcode der HTML-Datei.

L-ectron-X


----------



## Guest (28. Apr 2004)

Danke für die Antwort L-ectron-X
Ja, du hast es richtig verstanden. Nur habe ich im neuen Ordner keine class-Dateien abgelegt, da ich nur mit der jar-Datei arbeiten möchte.
Ich habe nun auf deine Bemerkung hin im neuen Ordner - nennen wir ihn "MeinApplet" (wie das Applet selber) -  auf dem Desktop den ganzen Ordner "classes" aus dem JCreator-Ordner hinein kopiert, aber es funktioniert  immer noch nicht.

Hier ist der HTML-Code:

```
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
	archive = "MeinApplet.jar"
	code	= "MeinApplet.class"
	width	= "500"
	height	= "300"
	>
</APPLET>
</CENTER>
</BODY>
</HTML>
```
Ich hoffe, du kannst mir helfen. Schon jetzt vielen Dank für deine Bemühungen.
Gruss 
Ivo


----------



## L-ectron-X (28. Apr 2004)

Also das Applet wird *in Deinem Fall* nur funktionieren (und das unabhängig vom Speicherort), wenn  das Applet  in einem JAR-Archiv in dessen "Wurzelverzeichnis" liegt. Anders gesagt: In dem JAR-Archiv darf kein weiteres Unterverzeichnisse existieren, in dem dann das Applet gespeichert ist.
Wenn auf Deinem Desktop ein Verzeichnis mit beliebigem Namen liegt, in dem die JAR-Datei (wie oben) und die HTML-Datei zu finden sind, muss es funktionieren.
Überprüfe bitte mal die Struktur Deines JAR-Archivs.

L-ectron-X


----------



## Guest (29. Apr 2004)

Vielen Dank für die Antwort, L-ectron-X. Wie kann ich aber die Struktur meines jar-Files überprüfen? Im JCreator habe ich nichts gefunden.


----------



## Guest (29. Apr 2004)

Für solche Zwecke benutze ich meistens WinRAR oder ein vergleichbares Programm.
Wenn Du ein solches Programm bei Dir installiert hast, klickst Du mal mir der rechten Maustaste auf das JAR-File. In dem sich öffnenden Kontextmenü wählst Du den Eintrag "Öffnen mit..." und wählst dann Dein Packprogramm aus.
Das Packprogramm öffnet sich und zeigt Dir den Inhalt der JAR-Datei an. Man kann dann innerhalb der JAR-Datei wie in einem Dateibrowser navigieren und damit auch die Struktur einsehen


----------



## L-ectron-X (29. Apr 2004)

Wieder mal vergessen einzuloggen.  :? 
Wenn's Fragen zum obigen Posting gibt, dann an mich.

L-ectron-X


----------



## Guest (29. Apr 2004)

Danke vielmals L-ectron-X
weisst du gerade auch, wo man das Programm bekommen kann?

Inzwischen hat ein Kollege von mir bei sich zu Hause mit einem anderen Java-Editor (ich weiss nicht welchen) mein Java-File neu kompiliert. Er hat kein jar-File gemacht, sondern direkt mit den Klassen gearbeitet. Bei ihm lief dann das Applet tiptop (meine Kompilation lief bei ihm dagegen nicht). Als er dann seine Kompilation mir und einem anderen Kollegen  zurückgeschickt hatte, lief das Applet aber bei keinem...
Ich weiss also nicht, ob es am jar-File liegt. Trotzdem mchte ich das natürlich gerne abchecken.
Gruss Ivo


----------



## Ivo (29. Apr 2004)

Sorry, auch vergessen den Namen zu schreiben. Das vorhin war natürlich ich.


----------



## L-ectron-X (29. Apr 2004)

WinRAR bekommst Du in einer 30-Tage-Version hier:
http://www.winrar.de/html-ger/download/dl-winrar.htm

Wenn Du es dann nicht hin bekommst, oder den Fehler nicht finden kannst, kontakte mich bitte hier noch mal, dann würde ich es mir gerne mal ansehen.

L-ectron-X


----------



## Ivo (29. Apr 2004)

Hallo L-ectron-X
danke vielmals
Ich habe das Programm ausprobiert und das jar-File anschauen können. Die Klassen sind aber meiner Meinung nach alle im Wurzelverzeichnis des jar-Files. Daneben enthält das jar-File auch die html-Datei und einen Ordner "Meta-INF" mit der Datei "MANIFEST.MF".
Das Applet läuft ja auch dann nicht überall, wenn kein jar-File verwendet wird.
Ich hätte nicht dagegen, dir mein Applet zuzusenden. Wie könnte ich das machen? Würden dir das html-File und das jar-File genügen oder solle ich besser den ganzen vom JCreator erstellten Ordner senden?
Viele Grüsse
Ivo


----------



## L-ectron-X (29. Apr 2004)

Schicke mir bitte mal das Material, welches JCreator erzeugt hat an l-ectron-x@bytes4fun.de
So ist es für mich einfacher den Ist-Zustand nachzuvollziehen.


----------



## Ivo (30. Apr 2004)

Hallo L-ectron-X
ich habe dir eben das Material gesendet. Ich bin erst vor kurzem von einem ganztägigen Kurs nach Hause gekommen und konnte es es also erst jetzt erledigen, sorry.
Bis bald
Ivo


----------



## L-ectron-X (1. Mai 2004)

Ivo hat gesagt.:
			
		

> Ich bin erst vor kurzem von einem ganztägigen Kurs nach Hause gekommen und konnte es es also erst jetzt erledigen, sorry.
> Ivo


Brauchst Dich doch nicht entschuldigen. Alles zu seiner Zeit eben...
Applet habe ich bekommen, mal sehen, was ich finde.


----------



## L-ectron-X (1. Mai 2004)

Ich habe mir Dein Applet angesehen in bin u.a. zu überraschenden Ergebnissen gekommen. Es geht bei Deinem Applet um eine ungünstige Kombination von Problemen.
Die Analyse der Manifest-Datei Deines Applets ergab, dass der Code mit dem Java-SDK in der Version 1.4.2 kompiliert wurde. Nun ist es so, das der Interpreter bei der Ausführung von Applets den kleinsten gemeinsamen Nenner darstellt. Da die meisten Browser-Hersteller von Hause aus in ihren Programmen leider nur die alten Java-VMs implementieren, kann es hier zu Problemen kommen, wenn der Benutzer eine VM-Version vor 1.2 installiert hat. Das wäre z.B. beim MS Internet Explorer ohne Java-PlugIn der Fall. Das heißt, dass auf einem System z.B. mit Internet Explorer und ohne Java-PlugIn die Anzeige Deines Applets nicht möglich ist.
Ich programmiere daher meine Applets, wenn sie im Internet laufen sollen, mit dem Sun JDK 1.1.8. Applets die mit dem Compiler dieser Version hergestellt sind, laufen in allen Browsern mit Java-Unterstützung.
So weit so gut. Das erklärt aber noch nicht, warum Dein Applet nicht mehr funktioniert, sobald Du es auf den Desktop, oder in ein anderes Verzeichnis kopierst.
In Deinem Release-Verzeichnis - so konnte ich es sehen - hast Du die HTML-Datei, die Jar-Datei sowie alle fertig kompilierten Klassen gespeichert.
Du hast irgendwo in Deinen Postings erklärt, dass Du nur die HTML-Datei und die Jar-Datei, in dem sich das Applet befindet, in andere Verzeichnisse kopiert hast. Und da habe ich wirklich überraschendes heraus gefunden:
Ich bin überzeugt, dass Du - wie ich auch - Opera-Benutzer bist. Während dem Internet Explorer die Ausführung von Applets in Jar-Dateien keine Probleme bereitet, *scheint* Opera dazu nicht in der Lage zu sein!
Denn jedes Mal, wenn ich die HTML-Datei und die Jar-Datei aus Deinem Release-Verzeichnis an eine beliebige Stelle in meinem Dateisystem kopiert habe, konnte nur Opera das Applet nicht mehr starten.
Wenn ich aber - so wie Du auch - das gesamte Release-Verzeichnis kopierte, gabs mit Opera keine Probleme.
Also habe ich mal den gesamten Inhalt des Release-Verzeichnisses auf den Desktop kopiert. Wirklich interessant! Das Applet lief! Dann löschte ich alle Dateien, bis auf die HTML-Datei und die Jar-Datei wieder vom Desktop und startete das Applet erneut mit Opera. Nichts! Das Applet funktionierte nicht mehr.
Das lässt nur noch einen Schluss zu: Opera kann nicht mit Jar-Dateien umgehen, *die lokal gespeichert sind*.
Er ignoriert das archive-Argument von Applets und führt statt dessen die in der HTML-Datei angegebene Class-Datei aus, wenn sie im gleichen Verzeichnis zu finden ist.
Liegt die Jar-Datei auf einem Web-Server, kann Opera auch Applets aus Jar-Dateien ausführen. Ich hab's ausprobiert.
Wenn Du also möchtest, dass möglichst viele Benutzer in den Genuss (das sage ich so, wie ich es meine! :toll Deines Applets kommen, solltest Du Deine Applets mit dem Sun JDK 1.1.8 kompilieren. Der Rest funktioniert dann schon im Internet.

L-ectron-X


----------



## Ivo (1. Mai 2004)

Hallo L-ectron-X
danke für deine ausführlichen Erklärungen. Ich benutze aber den Internet Explorer und nicht Opera, und trotzdem habe ich das Problem. Ich habe auch schon versucht, den ganzen JCreator-Ordner aufs Desktop zu kopieren, aber trotzdem funktionierte das Applet nicht. Es hat vielleicht nichts damit zu tun, ob die Klassen zusätzlich dabei sind oder nicht. Bei dir hat es zwar so funktioniert...also wirklich unverständlich...irgendwo steckt der Wurm drin.
Das mit der alten JDK habe ich auch schon gehört und werde versuchen eine solche herunterzuladen und damit das Applet kompilieren, mal sehen. Hast du es schon versucht?
Vielen Dank für deine Bemühungen und Erklärungen.
Ivo


----------



## L-ectron-X (1. Mai 2004)

Ivo hat gesagt.:
			
		

> Das mit der alten JDK habe ich auch schon gehört und werde versuchen eine solche herunterzuladen und damit das Applet kompilieren, mal sehen. Hast du es schon versucht?


Ja, ich habe den Quellcode Deines Applets mit dem Sun JDK 1.1.8 kompiliert. Es lief im IE wie im Opera perfekt.
Im IE auch mit der MS-VM bei abgeschaltetem Java-PlugIn 1.4.2.
Prüfe doch mal in den Einstellungen des IE, mit welcher VM er arbeitet. Falls die MS-VM benutzt wird, könnte hier Dein Problem zu finden sein.


----------

