Java Applet - ClassNotFound online, offline korrekt

Lupus93

Mitglied
Hallo

Nach mehrtägigem Rumprobieren komm ich einfach nicht mehr weiter.
Da es letztens mit der Antwort ziemlich schnell ging und sehr erfolgreich war,
hoffe ich, jetzt wieder Hilfe zu finden.
Ich hoffe auch, dass dieses Forum der richtige Ort für die Frage ist.

Zur Situation:
Zuerst wurde das Java-Projekt lokal programmiert und getestet, alles läuft.
Dann eine Klasse AppletMS.class hinzugefügt, um das Programm als Applet laufen zu lassen.
In Eclipse funktioniert alles.
Lokal aus einer HTML-Datei heraus aufgerufen funktioniert alles.
Also denkt er sich, ab auf die Homepage damit.
Und schon gibts die ClassNotFoundException.
Und das Kriminelle: wenn ich mich auf den FTP-Server der Seite einwähle und die HTML-Datei aufrufe,
funktioniert auch alles??
Nur wenn man direkt auf die Internetseite geht (mit dem Browser), geht auf einmal nichts mehr.
Geht übrigens auch mit der hier nicht:
Java:
import java.applet.Applet;
import java.awt.Graphics;

public class HelloWorldApplet extends Applet
{
  /* @Override */ public void paint( Graphics g )
  {
    g.drawString( "Hallo Welt!", 50, 25 );
  }
}

HTML:
<applet id="app" width=0 height=0 style=" background-color: silver; position:absolute;
 top:150px; left:100px">
 <param id="parameter" name="groeße" value="">
</applet>
Größe und Code des Applets werden per Buttonklick geändert.
Wie gesagt, im FTP Starten der HTML und alles geht, direkt übern Browser geht nichts.

Hat irgendjemand eine Idee, was ich falsch mache?

grüße
 
Poste doch mal die Fehlermeldung...
Hast du die Classes einzeln aufm Space liegen? Fals ja pack sie in ein .jar (zip-Archiv).
 
in deinem applet-tag fehlen einfach mal grundlegende attribute wie "code" , "codebase" und "archive" ... denn woher soll der browser denn wissen WELCHE klasse er starten soll wenn du ihm das nicht sagst ?
 
Hallo

in deinem applet-tag fehlen einfach mal grundlegende attribute wie "code" , "codebase" und "archive" ... denn woher soll der browser denn wissen WELCHE klasse er starten soll wenn du ihm das nicht sagst ?

Ich schrieb:
Größe und Code des Applets werden per Buttonklick geändert.

Sieht praktisch so aus:
HTML:
var x = document.getElementById("app");
	x.width="700px";
	x.height="600px";
	x.code="AppletMS.class";

Probiert habe ich bereits Folgendes:
- Klassen erstellt im default package, exportiert (eclipse), jar-file entpackt und die Dateien in das Verzeichnis
kopiert, in der die HTML liegt.

- Klassen erstellt im Package, der Code war dann:
HTML:
x.code="package.AppletMS.class";

.jar Archiv wird jetzt probiert, vielen Dank für den Hinweis!
Kernproblem ist meiner Meinung nach, dass es offline geht, und sobald ich die selbe Ordnerstruktur hochlade,
die ClassNotFoundException kommt (das wars auch an Fehlermeldungen).

grüße
 
Hallo



Ich schrieb:


Sieht praktisch so aus:
HTML:
var x = document.getElementById("app");
	x.width="700px";
	x.height="600px";
	x.code="AppletMS.class";

Probiert habe ich bereits Folgendes:
- Klassen erstellt im default package, exportiert (eclipse), jar-file entpackt und die Dateien in das Verzeichnis
kopiert, in der die HTML liegt.

- Klassen erstellt im Package, der Code war dann:
HTML:
x.code="package.AppletMS.class";

.jar Archiv wird jetzt probiert, vielen Dank für den Hinweis!
Kernproblem ist meiner Meinung nach, dass es offline geht, und sobald ich die selbe Ordnerstruktur hochlade,
die ClassNotFoundException kommt (das wars auch an Fehlermeldungen).

grüße

ich gehe einfach mal stark davon aus (ohne es jetzt getestet zu haben) das eben genau DAS nicht funktioniert ... du kannst nicht einfach über JavaScript das "code"-attribut ändern und dann hoffen dass das VM-plugin darauf reagiert ... das geht schlicht und ergreifend einfach NICHT !

das es lokal funktioniert kann ich mir nicht erklären ... theoretisch sollte hier der selbe fehler auftreten ... aber fakt ist : egal ob über object, applet oder sonstwas für ein tag : die zu ladene klasse , ihr archive und die codebase MÜSSEN zum zeitpunkt des zugriffes bereits vorhanden sein ... und dieser zeitpunkt ist wenn der browser die seite geladen hat und das VM-plugin erkennt das es was zu tun gibt ...
ein nachträgliches editieren des tags nach dem das plugin bereits die init-phase durchlaufen hat funktioniert nicht !

pack dein applet einfach in ein jar ... gib codebase, archive und code an .. und fertig ... ein leeres applet-tag wird auch zu nichts führen ...
 
Hallo

ich gehe einfach mal stark davon aus (ohne es jetzt getestet zu haben) das eben genau DAS nicht funktioniert
das es lokal funktioniert kann ich mir nicht erklären ..
Komische Sache oder?
Aber es geht nunmal, und zwar perfekt...lokal 🙁

das geht schlicht und ergreifend einfach NICHT !
Naja, also irgendwie ja schon :bahnhof:

ein nachträgliches editieren des tags nach dem das plugin bereits die init-phase durchlaufen hat funktioniert nicht !

pack dein applet einfach in ein jar ... gib codebase, archive und code an .. und fertig ... ein leeres applet-tag wird auch zu nichts führen ...

Danke fürs Erste, ich schaus mir mal an, auch wenns lokal nunmal geht...
Ja, klar könnte ich alles vorher machen, aber: Es geht um ein Spiel,
und ich entscheide mit 3 Buttons, wie groß das Spielfeld ist (Minesweeper).
Auch die Anpassung der Appletgröße funktioniert ja einwandfrei.
Die Frage ist, warum es lokal geht und hochgeladen nicht...
Das Object-Tag will irgendwie nicht, ich versuch mal weiter, dass zum Laufen zu bringen!

Danke schonmal für die Antworten

grüße
 
Nach dem init() ändern bring nix, allerdings ist es sehr wohl möglich "dynamisch" applet/object/embedded-Tags per JS hinzuzufügen und das Javaplugin bekommt das auch korrekt mit!

Warum packst du eigentlich ein leeres Applet-Tag in's HTML und änderst später per Javascript?

Ich würd's so machen
1.) das komplette Tag in's HTML packen oder
2.) das Tag komplett über Javascript erzeugen
 
hmm ... yea ... ich wette "browser" geht hier wieder in richtung FireFox / Chrome die dann beim ändern der seite über JS alle tag-plugins noch mal anstoßen und noch mal über die page laufen lassen ... was für ein unglaublicher resourcen-verbrauch ... aber was reg ich mich auf ... das FF auch "hacker-seiten" fehlerfrei darstellt anstatt wie andere vernünfige browser das laden zu verweigern ... naja ... schrott-browser .. PUNKT


@TO
wenn es unbedingt so wichtig ist dann schreib dir doch einfach ein kleines PHP-backend und bastel die buttons ganz normal als HTML-form ... da extra mit AJAX rumspielen ... naja wers mag ... aber AJAX braucht aufm server so oder so n backend ... und dann kann mans auch gleich so mal schnell per hand schreiben ...


(ey auf was für ideen manche kommen ... sich mit lösungen rumschlagen ... anstatt mal eben den "einfachen" weg zu gehen)
 
Hallo wertes Forum

Als allererstes:
Es geht! :toll:
Doch, da staunt der Fachmann, und der Laie (ich) wundert sich :bahnhof:
Warum geht es auf einmal?
Das endet alles nur in einem Ratespiel, wenn du nicht die komplette Fehlermeldung postest!

Wenn man aber zu doof ist, die Java Konsole zu bedienen, kriegt man das nicht gebacken.
Habe halt nur auf "klicken für mehr Information" geklickt...😳
Also jetzt mal einen Moment genommen und die ControlPanel ausgeführt.
In den Einstellungen dann folgendes: Konsole einblenden, Logging an, Tracing an, Lebenszyklenausnahmen
etc p.p, fast alles das geht. Und dann hab ich Allgemein-temporäre Internetdateien gefunden.
Ich hatte schon beim Lokal programmieren das Problem, dass der die Änderungen erst nach einiger Zeit annahm,
z.b. wenn ich was im Java-Code geändert hatte. Cache-Löschen hat nichts gebracht, ich dachte mir schon, dass
Java selber cached, wusste aber nicht, wo und wie. Jetzt habe ich dort einfach mal den Haken rausgenommen,
nix da mit Speichern von Daten. Was es am Ende von den Einstellungen in der ControlPanel war keine Ahnung,
kann ja fast nur dies gewesen sein. Neuladen der Seite, und die Konsole beobachten...wollte ja die Fehlermeldung haben. Aber da kam nix :noe:
Und dann kam meine GUI 🙂
Funktioniert einwandfrei, das Größe ändern des Applets, der Code, einfach alles 🙂

@träät
Irgendwie muss ich einfach was dazu sagen.
Was bitte ist an diesem Weg nicht leicht?
HTML:
if(groeße=="klein"){

	var x = document.getElementById("app");
	x.width="550px";
	x.height="400px";	
	x.code="minesweeper.AppletMS.class";
	var y = document.getElementById("parameter");
	y.value="klein";
	}
Das war meine erste Idee, es funktioniert einwandfrei und es ist mir irgendwie suspekt, ein PHP-Backend als einfacher darzustellen.
Die Sache ist ja auch die, das Minesweeper sieht genauso aus im Aufbau wie das von Ubuntu. Das heißt,
man kann im Spiel 3 Größen auswählen + benutzerdefiniert. Die 3 Buttons wären also nicht mal nötig,
wenn nicht auf einer festen Appletgröße eine riesen Feldanzahl bescheiden aussehen würde.
Und so kann man mit Hilfe der Buttons sich sein Applet so gestalten, dass auch bei vielen Feldern alles gut sichtbar ist.

Danke nochmal an alle für die Hilfe!!

grüße
 
hmm ... yea ... ich wette "browser" geht hier wieder in richtung FireFox / Chrome die dann beim ändern der seite über JS alle tag-plugins noch mal anstoßen und noch mal über die page laufen lassen ... was für ein unglaublicher resourcen-verbrauch ... aber was reg ich mich auf ... das FF auch "hacker-seiten" fehlerfrei darstellt anstatt wie andere vernünfige browser das laden zu verweigern ... naja ... schrott-browser .. PUNKT


(...)

Hast du was getrunken? Zudem wird kein Browser dieser Welt irgendwelche Seiten blocken....das Ding stellt HTML dar, nicht mehrund nicht weniger.
Alles andere gehtber Plugins, Contentfilter und ähnliches...und dafür kann der Browser relativ wenig.
Und Chrome und FF verhindern/blocken wenigstens XSS und Co.
 
ich weis zwar nicht auf was für pfaden ihr unterwegs seit ... fakt ist das selbst eine AJAX-manipulation eigentlich nicht im sinne des erfinders ist um damit danymisch applets auszutauschen ...
die eigentlich "konforme" sache wäre eine komplett neue seite mit einem fertigen applet-tag vom server auszuliefern ... und ob diese nun über php zusammengebaut wird oder statisch vorhanden ist spielt keine rolle ...

und zum thema "sicherheit" in browsern : ich erlebe es leider jeden tag das sich irgendeiner meiner bekannten auf irgendwelchen seiten irgendwas einfängt nur weil FF und co auf biegen und brechen versuchen irgendwas aus dem code zu machen ... und mein IE sicher schlicht weigert da die seite der eigenen DOCTYPE nicht entspricht und daher sowohl das laden abbricht als auch den versuch irgendwas darzustellen ... was dann natürlich in nem gescheitertem angriff endet ... und das ist STANDARD im IE9 OHNE irgendwelche zusätze oder content-filter oder weis der geier ...
wenn man weis WIE ist man mit dem IE9 im netz deutlich sicherer unterwegs und braucht sich keine sorgen um irgendwelche sicherheits-software machen als mit FF und co und immer schön draufklicken ...
ich weis gar nicht mehr wie oft ich meine win-setup-dvds bei einiges system monatlich durchrattern lasse ... und es liegt nicht nur an der dummheit der user ... sondern auch am web selbst sowie an extrem schlechter software die solche lücken überangreifbar macht ...

glaubt mir ... das ist nur zum teil überzeugung ... zum anderen viel größeren ist es tägliche lästige wiederkehrende arbeit und erfahrung ... und da ist es schon berechtigt das ich mir die hände überm kopf zusammenschlage und diesen schrott den gerade der FF liebend gerne macht kritisiere ...

ich meine ... alleine die aktuelle politik mit den versions-nummern ... nur um dem potenziellen nutzer zu zeigen "hier guck wir machen was" ... und was kommt bei raus ? vielleicht hier un da n paar fixes ... aber der kern ist immer V4 oder V5 ... macht euch selbst nichts vor ...
 
Ich geb dir ja Recht das die bessere Variante wäre die komplette Seite via PHP/Servlets/o.ä. auf Server-Seite generieren zu lassen, leider geht das aber nicht immer auf Grund von diversen Anforderungen.

Applet-Tags zu manipulieren ist sicher auch nicht schön, Applet-Tags per JS zu erzeugen ist aber sicher nicht falsch und wird von Oracle/Sun auch ausdrücklich supportet. Zusätzlich gibt es von Sun/Oracle sogar ein entsprechendes Javascript was genau solche Anforderungen abdeckt (Applets hinzufügen, JNLP-Links erzeugen mit Versions-Prüfung und automatischem JRE-Download u.s.w.).

Den InternetExplorer hier als sicher hinzustellen ist natürlich schon lustig..zumal es der einzig mir bekannte Browser ist der nichts effektiv gegen XSS tut. Javascript von fremden Domains einbinden und ausführen - kein Problem, der IE macht das gerne mit während z.B. Chrome und FF gleich blocken.

Das der Doctyp mit irgendwelchem schädlichen Code zu tun haben soll ist mir auch ein absolutes Rätsel.

Und wenn ein Browser versucht aus schrottigem HTML noch etwas darzustellen, dann wohl ganz klar der IE.

Ist nicht böse gemeint, aber ich hab das Gefühl das du hier im Thread ein wenig Buzzword-Bingo ohne Hintergrundwissen spielst...

Aber gut..ist ja alles OT hier und der Thread ist erledigt...

** Edit **
Auf welchen Pfaden ich unterwegs bin? Berater bei diversen großen Versicherungshäusern in BW, By, Finanzdienstleister Volksbanken, Sparkassen, Landesbank....In-House-Software mit plain Java, JEE 5 und 6, Spring, Webanwendungen mit GWT u.s.w...also ein klein wenig weiß ich wovon ich rede...

** Edit 2 **
Die Versionspolitik von FF ist in der Tat etwas übel und hat auch dazu geführt das sehr viele vom FF weg gehen in Richtung Chrome oder teilweise sogar IE. Chrome hat aber eine ähnliche Versionspolitik, schafft es aber das zum einen der User nicht bei jedem Start genervt wird und zum anderen das die Addons kompatibel bleiben - was bei FF nicht der Fall ist. Daher hat z.B. auch GWT den Support für das FF-DevPlugin für's erste mal gestoppt und das Plugin geht nur noch bis FF 11 (? oder 14 ?).

Die Versionspolitik an sich ist halt dem (zumindest versuchten) agilen Vorgehen geschuldet..da ist es nun mal so das relativ häufig neue Versionen kommen..was an sich ja auch nicht schlecht ist. Allerdings sollte mit den neuen Versionen (zumindest Minor-Versionen bzw Fix-Releases) halt der Rest des Browsers auch noch funktionieren...
 
Zuletzt bearbeitet:

Zurück
Oben