Applet aus Eclipse

Moinsn

Mitglied
Moinsn ...
Ich versuche seit Stunden mein Applet außerhalb von Eclipse laufen zu bekommen. Leider fehlt laut Fehlermeldung jedesmal entweder die Klassendatei (wenn ich es mit der jar Datei versuche) oder eine TargetException und access denied (wenn ich es nur mit der jar datei versuche) wie der erste beiliegende Screenshot zeigt.
Ich würde meine 3 Klassen am liebsten als jar exportieren, aber auch dass wirft ne Exception, zu sehen auf dem 2ten Scrennshot.






Eingebunden wirds so.... ?????
HTML:
<html>

<body>

<applet 

	archive= pegSoli 
	code=Gui.class 
	width="200" 
	height="200" >

</applet>

</body>

</html>

der komplette Source Code wär jetzt hier wahrscheinlich zu viel ...
sollte es relevant sein könnt ihr ihn hier einsehen
SourceCode
 
Zuletzt bearbeitet:
Bevor du signierst, zeige bitte noch mal deinen Code, wo du die Bilder einliest.
Wahrscheinlich ist der verkehrt und es ist keine Signierung notwendig.
 
hab dass leider n bissel spät gelesen und war jetzt die ganze Zeit damit beschäftigt das Signieren hin zu bekommen ...


hier der Code:

Java:
	public Gui() {
		super();	// Initialisieren der Buttonimages
		FigurePng = new ImageIcon("../playingFigure.png");
		EmptyPng = new ImageIcon("../emptyField.png");
		SelectedPng = new ImageIcon("../selectedFigure.png");
	}

jedoch löst das bestimmt immer noch nicht das Problem, dass der die zu Startende Klasse nicht findet, sobald ich meine class Datei durch die jar ersetze.

DANKe
 
Zuletzt bearbeitet:
Na moglicherweise doch.
Denn dein Code ist so aufgebaut, dass du die Dateien auf dem Client suchst. Ein Applet hat aber keine Zugriffsrechte auf die Verzeichnisumgebung des Clients, es sei denn er ist signiert. Deshalb hat dir Marco13 die Signierung vorgeschlagen.
Aber eine Signierung ist in diesem Fall völlig unnötig!
Um die Bilder einzulesen, musst du von der URL des Applets ausgehend die Bilder einbinden.

Effizient kann das mit der
Code:
javax.imageio.ImageIO
erledigt werden.
Java:
private Image image;
[...]
   try {
      image = ImageIO.read(new URL(getCodeBase(), "Bild.jpg"));
   }
   catch(IllegalArgumentException iae) {
      JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");
   }
   catch(IOException ioe) {
      JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");
   }
Hier werden die Bilder direkt aus dem Verzeichnis des Applets geladen.


Man kann die Bilder auch mit in ein Jar-Archiv packen, in dem auch das Applet liegt.
Dann müsste der Code so aussehen:
Java:
private Image image;
[...]
   try {
      image = ImageIO.read(getClass().getResource("Bild.jpg"));
   }
   catch(IllegalArgumentException iae) {
      JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!");
   }
   catch(IOException ioe) {
      JOptionPane.showMessageDialog(this, "Fehler beim Einlesen der Grafikdatei!");
   }
 
Cool ...
habs über ein BufferdImage hin bekommen.
Nur ergab sich gleich das nächste Problem.
Es handelt sich um einen Rekursiven Algorithmus bei dem ich *nicht lachen ...
den Stack auf 500Mb Schrauben musste.
Ich weiß nicht obs daran liegt, aber der hört nach ein paar Sekunden auf zu machen.

Sry ...
Ich komm mir grad schon vor wie der erste Mensch an nem Pc :autsch:
 
Zuletzt bearbeitet:
Wie gesagt bekomme ich nun im Browser einen StackOverflow wat auch ganz klar ist. Ich würde nun gern den Stack für das Applet erhöhen so wie ich das in Eclipse über die vm argumente auch gemacht habe. Nun sitze ich hier jetzt schon ewig dran und bekomme es einfach nicht hin. Wollte es am liebsten im Applet- Tag machen.
HTML:
<body>
<applet code="Gui.class" archive="pegSolitaer.jar" width="702px" height="483px">
<PARAM name="java_arguments" value="-Xss1024m">
</applet>
</body>
</html>
Nur scheint das, egal was ich versuche, die Einstellung einfach nicht an zu nehmen.

Als ich hier im Forum nach ner Lösung geschaut habe fand ich eine Kommentar in dem jmd meinte man könne das auch über System.setProperty setzen. Aber leider hab ich auch so nach Stunden langen rum probieren nix hin bekommen.

DANKE
 
Zuletzt bearbeitet:
Muss es nicht lauten:
HTML:
<param name="java_arguments" value="-Xmx1024m">
:question:
Ansonsten halbiere mal den Wert für den Anfang.
 
Xmx ist doch der Heap ....
Ich musste in Eclipse immer die Stack Size, also Xss nach oben schrauben.
Habs grad nochmal mit Xmx512m versucht, und mit in der Java Konsole die System- und Bereitstellungseigenschaften ausgeben lassen. Hab mich erst gefreut weil da Xmx auch wirklich auf 512 stand. Dies scheint jedoch leider der Standartwert zu sein, denn als ich Xmx256m versucht habe stand in der Konsole immernoch 512. Mal abgesehen dass der die Settings garnicht zu übernehmen scheint, hab ich da noch nicht mal ne Möglichkeit mir die zur Verfügung stehende Stackgröße anzeigen zu lassen.

Ich könnt ;( denn ich saß jetzt hier bis heut früh dran und bin nicht wirklich schlauer. Es wär echt klasse wenn mich jmd erlösen könnte denn das Projekt ist auch nicht grade zum Spaß ^^
Ich DANKE euch auf jeden für eure Hilfe.
 
Moinsn ...

wie's schaut hab ich es hin bekommen. Der Stack ist einfach zu schnell gewachsen so dass die Erweiterung von Xss aus dem HTML heraus im Gegensatz zu den Argumenten aus Eclipse scheinbar nicht mehr gezogen haben. Also hab ich mir überlegt dass der wachsende Speicherbedarf eigendl. zum großen Teil nur an den Leichen in einer ArrayList liegen kann. Also hab ich einfach mal mit trimToSize rumgespielt und danach den GarbageCollector n kleinen Schupp gegeben. Das hat wie's aus sieht auch geklappt denn das Applet läuft jetzt im web. Nur bin ich mir noch nicht sicher ob das auch stable ist. Wenn ihr's mal laufen lassen wollt ...
PegSolitaer
Würde mich interessieren wie sich der Speicherbedarf bei euch verhält und ob's überhaupt ohne StackOverFlow durch läuft.
DANKE & BisDensn
 

Neue Themen


Zurück
Oben