Applet Fehler: java.lang.reflect.InvocationTargetException

Xym13

Mitglied
Hallo zusammen,

ich habe die Applet fertig geschrieben. In Eclipse läuft es ohne Probleme. Auch im Java Editor bekomme ich keine Fehlermeldung. Doch wenn ich dann die HTML Datei aufrufe, die der Java Editor selbst erstellet, bekomme ich im Browser die Fehlermeldung: java.lang.reflect.InvocationTargetException

Das hier stand unter Details:
Java-Plug-in 10.7.2.11
JRE-Version verwenden 1.7.0_07-b11 Java HotSpot(TM) Client VM
Benutzer-Home-Verzeichnis = C:\Users\Jan

Und das hier ist die HTML Datei:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>game.Main-Applet</title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">
</head>
<body>
<h1>game.Main-Applet</h1>
<hr>
<applet code="game/Main.class"  width="300" height="300">
</applet>
<hr>
</body>
</html>

Jetzt verstehe ich nicht, warum es in den Editoren funktioniert, aber in den Browsern nicht..
 
P

pappawinni

Gast
wo liegt denn dein HTML-File und wo dein class-File.
Passt das denn zu der Angabe:
Code:
<applet code="game/Main.class"  width="300" height="300">
 
P

pappawinni

Gast
Dass der Java-Editor das erstellt hat, besagt nicht viel.
Schau doch mal wo deine Files tatsächlich liegen..
 

Xym13

Mitglied
Ja, das passt.

Die HTML Datei liegt im Ordner "src". Dort befindet sich ebenfalls der Ordner "game".
Im Ordner game sind dann die Class und Jar Dateien.
 
P

pappawinni

Gast
Jar? dann musst du vermutlich noch "archives" reinflicken.

<applet code="game/main.class" archives="wasweissich.jar" width="100" height="100">
</applet>
 
P

pappawinni

Gast
Nehmen Sie zur Kenntnis das einige Browser, das ARCHIVE-Attribut nicht unterstützen, daher sollten alle nötigen Dateien auch nicht archiviert zur Verfügung stehen. Andere Browser unterstützen nur eine URL als ARCHIVE-Wert.

APPLET - Java Applet
 

Xym13

Mitglied
Ich hab jetzt erstmal alles in einen Ordner verschoben, damit ich ein problem damit schonmal ausschließen kann.

Mir ist gerade auch noch eingefallen, dass ich die Applet mit dem <object> Tag einbinden muss, da die Applet noch Informationen von der Internetseite braucht.

Hatte aus einem Post aus diesem Forum den Teil kopiert und angepasst:
HTML:
<object archive="Main.jar" classid="java:Main.class" codetype="application/java-vm" width="400" height="400" />
</object>

Jetzt bekomme ich auf einmal als Fehler NullPointerException..
 
P

pappawinni

Gast
Sorry, ich seh nicht, warum du jetzt auf <object> wechselst ?
Glaub nicht dass das was bringt.
 

L-ectron-X

Gesperrter Benutzer
Ja das passt. Der Java Editor hat die Datei erstellt.
Trotzdem ist es falsch!


Nehmen Sie zur Kenntnis das einige Browser, das ARCHIVE-Attribut nicht unterstützen, daher sollten alle nötigen Dateien auch nicht archiviert zur Verfügung stehen. Andere Browser unterstützen nur eine URL als ARCHIVE-Wert.
Das ist eine Aussage, die heute keinen Bestand mehr macht. Praktisch alle heute verfügbaren Webbrowser können mit dem archive-Attribut sicher umgehen.


Sorry, ich seh nicht, warum du jetzt auf <object> wechselst ?
Glaub nicht dass das was bringt.
Vielleicht hat er mal in der FAQ nachgesehen, was du auch mal machen solltest! ;)
http://www.java-forum.org/applets/114668-java-applet-webseite-einbinden.html
 
P

pappawinni

Gast
Hab ich gelesen mein Freund.
Mich hatte <object> nicht wirklich weiter gebracht, als ich das Problem hatte.
Ich sehe auch noch nicht, was da der "Vorteil" sein soll.
 

L-ectron-X

Gesperrter Benutzer
Das W3C hat HTML4 und damit auch das object-Tag im Jahr 1999 verabschiedet.
Sinn und Zweck dieses Tags war und ist es, die damals sehr unterschiedlichen Varianten von Medieneinbindungen zu vereinheitlichen, zu vereinfachen und damit unter einen Hut zu bekommen.

Mich hatte <object> nicht wirklich weiter gebracht, als ich das Problem hatte.
Hmm, und was hat dich weitergebracht, als du das Problem hattest?
 

Xym13

Mitglied
Also, das object Tag brauche ich, weil per PHP eine Spiele ID an die Applet übergeben werden soll. Hatte im Internet gelesen, dass man es so am besten macht.

Habe mir jetzt auch den ganzen FAQ Teil gelesen. Habe das Programm nun im Appletviewer getestet und dort hat es (nach ein paar Änderungen) funktioniert. Aber im Browser will es immer noch nicht funktionieren.

Eingebunden wird das Applet nun so:
HTML:
<object code="game/Main.class" classid="java:game/Main.class" codetype="application/java-vm" width="400" height="300" />
</object>

Firefox gibt mir dann die Meldung : java.lang.reflect.InvocationTargetException
Die JRE Version im Browser ist: 1.7.0_07-b11
Und kompiliert wurde es auch mit jdk1.7.0_07
 

L-ectron-X

Gesperrter Benutzer
Das code-Attribut gehört zum Applet-Tag. Du mischst hier die beiden Tags miteinander.
Außerdem werden die Packages nicht mit Slash, sondern mit Punkt angegeben.

Probiers mal so:
HTML:
<object classid="java:game.Main.class" 
    codetype="application/java-vm" width="400" height="300" />
</object>

Die Spiel-ID kannst du über Parameter ins Applet schleusen.
 

Xym13

Mitglied
Hatte das code-Attribut eingefügt, weil es beim Appletviewer als Fehler ausgegeben war.

Auch die Änderungen helfen nicht weiter..
 
S

Spacerat

Gast
Wie es aussieht machst du im Applet irgendetwas mit Reflections, das schliesse ich aus der Exception. Das meiste davon kannst du in Applets aber wegen des SecurityManagers vergessen, du wirst da auch nur selten durch eine sonst auftretende "Access Denied"-Exception gewarnt (so sehen Anwender gleich, was da versucht wird und entsprechend sinkt deren Vertrauen).
Evtl. stimmen Pfade und das drum herum also doch und das Problem ist ein ganz anderes. Irgendwo an den Stellen in deinem Applet zu finden, wo du Reflection verwendest.
[EDIT]Im übrigen: Soweit ich weiss, wird im Code-Attribut auch die Punktnotation für Klassen erwartet. Ein Klassenpfad lässt sich per CodeBase bestimmen.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
P

pappawinni

Gast
Also, weils ja angeblich unbedingt <object> sein soll.
Ich hab jetzt ein paar Stunden investiert und meine, dass weil ich den IE verwende, das Ganze offenbar etwas anders aussehen muss, als man sonst so liest, oder ich hab mich vielleicht auch hundertmal vertippt, wer weiss:

HTML:
<OBJECT 
  classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
  width="200" height="200">
  <PARAM name="code" value="Applet1.class">
</OBJECT>

Das macht auch nix besseres als <applet>.

Mit sowas:
HTML:
<object classid="java:Applet1.class" 
    codetype="application/java-vm" width="200" height="200" />
</object>

ging es nicht.
Jemand ne Idee, weshalb da noch mal ein Schrägstrich hinter height="200" steht ?
 
S

Spacerat

Gast
Jemand ne Idee, weshalb da noch mal ein Schrägstrich hinter height="200" steht ?
Aber klar doch: Das ist ein implizites Close-Tag. Damit spart man sich "</object>", wenn man keine Parameter hat. Für HTML 4+ muss man aber dazu sagen, dass wenn man es verwendet, Parameter- gefolgt von dem eigentlichen "</object>"-Tag echte Fehler sind.
 
S

Spacerat

Gast
Im übrigen: Soweit ich weiss, wird im Code-Attribut auch die Punktnotation für Klassen erwartet. Ein Klassenpfad lässt sich per CodeBase bestimmen.
Okay... da hat mich die Elektronik mächtig auf's Glatteis geführt: Nix da, Punktnotation... auch bei classid nicht. :oops:
Ich wundere mich gerade, woher L-Ectron-X diese Info mit der classid hat, bei Oracle steht's zumindest ein wenig anders. Using APPLET, OBJECT and EMBED Tags (hier für Java5, bei 1.4.2 steht ungefähr das selbe und aktuelleres finde ich nicht :()
 
Zuletzt bearbeitet von einem Moderator:
S

Spacerat

Gast
Hmm... okay. Meine Applet-Kenntnisse sind wohl auch nicht die aktuellsten. Wenn ich's mir überlege, dürfte diese IE-Geschichte mit der CLSID 2007 mit der "Beerdigung" der Microsoft-VM auch gestorben sein. Die SUN-JVM und folgernd auch die heutige Oracle-JVM hatten ja nie etwas mit Active-X zu tun und deswegen wohl auch keine CLSID. Vorstellbar, dass durch diese Unterscheidung eine spezielle JVM vorrausgesetzt wurde. Seltsamerweise funktioniert die Sache mit der CLSID auch heute noch im IE, nur das halt die Oracle-VM gestartet wird.
[OT]Das hat nach so vielen Jahren Abstinenz an Webseitenentwicklung meinerseits aber trotzdem einen üblen Beigeschmack: Wann werden diese Browserentwickler eigentlich mal Vernünftig, statt ständig ihr eigenes Süppchen zu kochen? Erst sollten Standards unterstüztzt werden, erst dann kann man sich über Extras unterhalten. Na was soll's. Wenigstens ist die Lage nicht mehr ganz so unerträglich wie vor 5 bis 10 Jahren.[/OT]
 
T

troll

Gast
also object-tag und classid für ie unter win ... gut .. das mag gehen ... aber dann auch NUR im IE unter Win ... kein anderer browser ... kein anderes OS ...

wenn es unbedingt object sein muss dann unterscheidet sich das ganze auch nicht vom applet-tag ... wobei das applet-tag immer noch funktioniert und am einfachsten ist (hab bis jetzt immer applet verwendet ... noch nie probleme gehabt ... warum also object ?)

@TO
ich vermute das du einfach falsch pfad-angabe hast oder im applet etwas tust was durch den security-manager schlicht untersagt wird ...
darum wäre es hier auch mal wichtig den code zu sehen ... denn offenbar scheint ja etwas mit diesem nicht zu stimmen ..

ansonsten : nimm einfach mal das package raus und versuch es so ...
 
P

pappawinni

Gast
imho seit Java 6u10 können (und sollen?) Applets auch über JNLP gestartet werden. Auf der Oracle Seite gibt es einige Beispiele dazu. Z.B.:

Deploying an Applet
The next-generation Java Plug-In technology

Ja, da war ich damals auch drauf getoßen, als ich mein erstes Applet teste wollte. Sieht ja auch seeeehr komfortabel einfach aus. :joke:
War mir aber nicht wirklich wichtig, wollt ja nur sehn, wie mein Applet im Browser aussehen könnte.
Dafür tat es <applet> allemal. :cool:
Schon blöd, wenn man bloss um ein Applet in ne Web-Page einzubinden länger braucht, als das Applet zu schreiben. :oops:
 

Xym13

Mitglied
Hier ist erstmal mein Quelltext, hoffe, dass Ihr darin den Fehler seht.

Main.java
Java:
package game;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import javax.swing.JApplet;

public class Main extends JApplet implements MouseListener, MouseMotionListener {

  // Variablen
  
  private static final long serialVersionUID = 1L;


  Grafik grafik = new Grafik();
  
  int mouse_x;
  int mouse_y;
  
  int mouse_x_alt;
  int mouse_y_alt;

  
  public static Figur[][] spielfeld = new Figur[5][7];
  public static int[][] kasten = new int[6][6];
  
  // Init Funktion
  
  public void init() {
    add(grafik);
    addMouseListener(this);
    addMouseMotionListener(this);
    
    // Figuren positionieren
    
    spielfeld[0][0] = new Figur(0, "turm");
    spielfeld[0][6] = new Figur(1, "turm");
    
    spielfeld[1][0] = new Figur(0, "springer");
    spielfeld[1][6] = new Figur(1, "springer");
    
    spielfeld[2][0] = new Figur(0, "dame");
    spielfeld[2][6] = new Figur(1, "dame");
    
    spielfeld[3][0] = new Figur(0, "koenig");
    spielfeld[3][6] = new Figur(1, "koenig");
    
    spielfeld[4][0] = new Figur(0, "laeufer");
    spielfeld[4][6] = new Figur(1, "laeufer");
    
    for(int i=0;i<5;i++) {
      spielfeld[i][1] = new Figur(0, "bauer");
      spielfeld[i][5] = new Figur(1, "bauer");
    }
  }
  
  // MouseMotionListener
  
  public void mouseDragged(MouseEvent e) {
    
  }

  public void mouseMoved(MouseEvent e) {

  }
  
  // MouseListener

  public void mouseClicked(MouseEvent e) {

  }

  public void mouseEntered(MouseEvent e) {
    
  }

  public void mouseExited(MouseEvent e) {
    
  }

  public void mousePressed(MouseEvent e) {
    repaint();
    
    mouse_x = e.getX() / 60;
    mouse_y = e.getY() / 60;
    
    //showrects();
  }
  
  public void mouseReleased(MouseEvent e) {
    repaint();
    
    mouse_x_alt = mouse_x;
    mouse_y_alt = mouse_y;
    
    mouse_x = e.getX() / 60;
    mouse_y = e.getY() / 60;
    
    clearrects();
    move();   
  }  
  // Figur setzten
  
  public void move() {
    if(check()) {
      spielfeld[mouse_x][mouse_y] = spielfeld[mouse_x_alt][mouse_y_alt];
      spielfeld[mouse_x_alt][mouse_y_alt] = null;
    }
    
    boolean white = false;
    boolean black = false;
    
    for(int x=0;x<5;x++) {
    	for(int y=0;y<7;y++) {
    		if(spielfeld[x][y] != null) {
	    		if(spielfeld[x][y].figur == "koenig") {
	    			if(spielfeld[x][y].color == 0) {
	    				black = true;
	    			} else {
	    				white = true;
	    			}
	    		}
    		}
    	}
    }
    
    if(!white)
    	this.destroy();
    
    if(!black)
    	this.destroy();
  }
  
  // Zug überprüfen
  
  public boolean check() {
    if(spielfeld[mouse_x_alt][mouse_y_alt] != null) {
      if(spielfeld[mouse_x_alt][mouse_y_alt].color == 0) {
        switch(spielfeld[mouse_x_alt][mouse_y_alt].figur) {
        
        // ------------------- Bauer --------------------
        case "bauer":
          
          break;
          
        // ------------------- König --------------------
        case "koenig":
       
        break;
          
        // ------------------- Läufer --------------------
        case "laeufer":
        
        break;
        
        // ------------------- Turm --------------------
        case "turm":  
      
        break;
        
        // ------------------- Dame --------------------
        case "dame":  
        
        break;
        
        // ------------------- Springer --------------------
        case "springer":  
       
        break;
        }
        
      } else { 
        // ----------- WEIßE FIGUREN ----------------
        switch(spielfeld[mouse_x_alt][mouse_y_alt].figur) {
        
        // ------------------- Bauer --------------------
        case "bauer":
        
          break;
          
        // ------------------- König --------------------
        case "koenig":
         
          break;
          
        // ------------------- Läufer --------------------
        case "laeufer":
       
        break;
        
        // ------------------- Turm --------------------
        case "turm":
          
        break;
        
        // --------------- Dame --------------
        case "dame":
          
        break;
        
        // -------------- Springer -------------------
        case "springer":
    
        break;
        
        
        }
      }
    }
    
    return false;
  }
  
  public static void main(String args[]) {
    new Main();
  }

}

Habe hier den Teil der Überprüfung mal weggelassen, da er echt lang ist. Sind nur vergleiche mit dem Array spielfeld. Und je nach dem wird true oder false zurück gegeben.

Grafik.java
Java:
package game;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JComponent;

public class Grafik extends JComponent{
  
  private static final long serialVersionUID = 1L;
  Image bauer_weis;
  Image bauer_schwarz;
  Image koenig_weis;
  Image koenig_schwarz;
  Image dame_weis;
  Image dame_schwarz;
  Image laeufer_weis;
  Image laeufer_schwarz;
  Image springer_weis;
  Image springer_schwarz;
  Image turm_weis;
  Image turm_schwarz;
  
  Figur spielfeld[][] = game.Main.spielfeld;
  int kasten[][] = game.Main.kasten;
  
  public Grafik() {   
   bauer_weis = new ImageIcon("game/bauer_weis.png").getImage();
   bauer_schwarz = new ImageIcon("game/bauer_schwarz.png").getImage();
   koenig_weis = new ImageIcon("game/koenig_weis.png").getImage();
   koenig_schwarz = new ImageIcon("game/koenig_schwarz.png").getImage();
   dame_weis = new ImageIcon("game/dame_weis.png").getImage();
   dame_schwarz = new ImageIcon("game/dame_schwarz.png").getImage();
   laeufer_weis = new ImageIcon("game/laeufer_weis.png").getImage();
   laeufer_schwarz = new ImageIcon("game/laeufer_schwarz.png").getImage();
   springer_weis = new ImageIcon("game/springer_weis.png").getImage();
   springer_schwarz = new ImageIcon("game/springer_schwarz.png").getImage();
   turm_weis = new ImageIcon("game/turm_weis.png").getImage();
   turm_schwarz = new ImageIcon("game/turm_schwarz.png").getImage();
  }   
  
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    spielfeld = game.Main.spielfeld;
    kasten = game.Main.kasten;
    
    
    // Schachbrettmuster
    
    g.setColor(Color.black);
    g.fillRect(0, 0, 300, 360);
    
    for(int x=0;x<5;x+=2) {
      for(int y=0;y<8;y++) {
        g.setColor(Color.white);
        g.fillRect(x * 60, y * 60, 60, 60); 
      }
    }
    
    for(int x=0;x<5;x++) {
      for(int y=0;y<8;y+=2) {
        g.setColor(Color.white);
        g.fillRect(x * 60, y * 60, 60, 60); 
      }
    }
    
    for(int x=0;x<5;x+=2) {
      for(int y=0;y<8;y+=2) {
        g.setColor(Color.black);
        g.fillRect(x * 60, y * 60, 60, 60); 
      }
    }
    
    // Figuren
    
    for(int x=0;x<5;x++) {
      
      for(int y=0;y<7;y++) {
        
        if(spielfeld[x][y] != null) {         
          // Schwarze Figuren zeichnen
          if(spielfeld[x][y].color == 0) {
            switch(spielfeld[x][y].figur) {
              case "bauer":
              g.drawImage(bauer_schwarz, x * 60, y * 60, 60, 60, null);
              break;
              case "koenig":
              g.drawImage(koenig_schwarz, x * 60, y * 60, 60, 60, null);
              break;
              case "dame":
              g.drawImage(dame_schwarz, x * 60, y * 60, 60, 60, null);
              break;
              case "laeufer":
              g.drawImage(laeufer_schwarz, x * 60, y * 60, 60, 60, null);
              break;
              case "springer":
              g.drawImage(springer_schwarz, x * 60, y * 60, 60, 60, null);
              break;
              case "turm":
              g.drawImage(turm_schwarz, x * 60, y * 60, 60, 60, null);
              break;
            }
          }   
          
          // Weiße Figuren zeichnen
          else if(spielfeld[x][y].color == 1) {
            switch(spielfeld[x][y].figur) {
              case "bauer":
              g.drawImage(bauer_weis, x * 60, y * 60, 60, 60, null);
              break;
              case "koenig":
              g.drawImage(koenig_weis, x * 60, y * 60, 60, 60, null);
              break;
              case "dame":
              g.drawImage(dame_weis, x * 60, y * 60, 60, 60, null);
              break;
              case "laeufer":
              g.drawImage(laeufer_weis, x * 60, y * 60, 60, 60, null);
              break;
              case "springer":
              g.drawImage(springer_weis, x * 60, y * 60, 60, 60, null);
              break;
              case "turm":
              g.drawImage(turm_weis, x * 60, y * 60, 60, 60, null);
              break;
            }
          }  
        }          
      }             
    }
  }
}

Figur.java
Java:
package game;


public class Figur {

	int color;	
	String figur = "";

	public Figur (int color, String text) {
		this.color = color;
		this.figur = text;		
	}
}
 
S

Spacerat

Gast
[OT]0. Kann es sein, dass dein Schachbrett nicht so ganz einem allgemeinen Schachbrett entspricht? Die Zahlen lassen zumindest darauf schliessen (0 bis 7 statt 0 bis 6)[/OT]

Zum Thema:
1. Ein Applet mit 'ner main-methode? Wird das Applet in der IDE etwa als Applikation ausgeführt oder als Applet gestartet? Die main-methode ist zumindest erst mal überflüssig.
2. Sind die Pfade der Bilder Ressourcen im Jar oder liegen die im Verzeichnis "game" auf dem Rechner? Kann sein, dass diese nicht geladen werden und es dadurch zu NPEs kommt.
3. Immer noch schwer zu sagen, woher diese "java.lang.reflect.InvocationTargetException" kommt. Im Code ist's meiner Ansicht nach jedenfalls nicht erkennbar.
 

Xym13

Mitglied
Die Anzahl der Felder ist gewollt nicht 8x8, es sollte eine abgewandelte Version werden.

Die Main Methode hab ich entfernt, aber ohne Erfolg.
Die Bilder liegen in dem Ordner "game". Zur Sicherheit hatte ich nochmal im Ordner selbst einen Ordner game angelegt, damit dieser Pfad auf jedenfall stimmt.

Hier nochmal zur Übersicht die Ordnerstrucktur:

src | - game(Ordner) | - game(Ordner) | - Bilder
| - index.html | - Bilder
| - Class & Java & Jar Dateien
 
S

Spacerat

Gast
:rtfm: Nu' wird's aber ernst... Ich bekomm's auch nicht hin... entweder ich bekomm 'nen Fehler angezeigt oder die JVM stürzt ab. Hat evtl. mal jemand auf die schnelle 'nen Link zu 'nem Online-Applet das funktioniert?
 

L-ectron-X

Gesperrter Benutzer
Entferne mal die main()-Methode aus dem Applet, die hat darin nichts zu suchen.
Dein Applet sollte dann im Applet-Tag und auch im Object-Tag funktionieren. (Siehe oben bzw. FAQ)
 
S

Spacerat

Gast
@TO: Ich meine, dass mein Java-Plugin im Browser funktioniert. Hatte schon befürchtet, dass da was im Argen war, weil gar nichts mehr starten wollte. Der Fehler war aber ein anderer und zwar, konnte die Klasse Main die Klasse Grafik nicht finden. Anscheinend müssen Applets, die aus Mehreren Klassen bestehen zwangsläufig in ein Jar. Das hatte ich anders in Erinnerung.
Dein Problem lässt sich anscheinend nur lösen, wenn du die Bildpfade einzeln als Parameter übergibst oder die Bilder mit ins Jar packst. Innerhalb des Jars aber müsste dann per Ressource-URL darauf zugegriffen werden ([c]getClass().getRessource("bild.png")[/c], wenn Grafik und die Bilder im selben Verzeichnis im Jar liegen).
 
T

troll

Gast
bin mir zwar nicht sicher ... aber es könnte daran liegen WIE du die images erzeugst ..

laut API ist beim konstruktor ImageIcon(String) der parameter eine PFAD-angabe ... das ganze wird an Toolkit delegiert wo es als abstract steht ... aber ich denke mal es wird versucht ein File-Objekt zu öffnen was dann in einer SecurityException endet und zwangsläufig zur InvocationTargetException führt (laut API wird diese nämlich nur dann geworfen wenn die gecallte methode eine exception wirft) ...

ergo : du lädst die bilder einfach falsch ... nutze stattdessen ImageIO und ClassLoader.getResourceAsStream() ... das dürfte die lösung sein da du so nun nicht mehr gegen die sandbox verstößt (wie ich ja vermutet hatte) sondern konform mit dieser gehst ...
vielleicht hätte dir der FAQ-beitrag "wie lade ich bilder in einem applet" weitergeholfen ...
 
S

Spacerat

Gast
bin mir zwar nicht sicher ... aber es könnte daran liegen WIE du die images erzeugst ..

laut API ist beim konstruktor ImageIcon(String) der parameter eine PFAD-angabe ... das ganze wird an Toolkit delegiert wo es als abstract steht ... aber ich denke mal es wird versucht ein File-Objekt zu öffnen was dann in einer SecurityException endet und zwangsläufig zur InvocationTargetException führt (laut API wird diese nämlich nur dann geworfen wenn die gecallte methode eine exception wirft) ...

ergo : du lädst die bilder einfach falsch ... nutze stattdessen ImageIO und ClassLoader.getResourceAsStream() ... das dürfte die lösung sein da du so nun nicht mehr gegen die sandbox verstößt (wie ich ja vermutet hatte) sondern konform mit dieser gehst ...
vielleicht hätte dir der FAQ-beitrag "wie lade ich bilder in einem applet" weitergeholfen ...
:oops: :autsch: natürlich... (zu viele Bäume hier. Hab' den Wald gar nicht gesehen
[EDIT]Ach ja... so klappt's dann auch mit <object>[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
T

troll

Gast
:oops: :autsch: natürlich... (zu viele Bäume hier. Hab' den Wald gar nicht gesehen
[EDIT]Ach ja... so klappt's dann auch mit <object>[/EDIT]

das ist mir sogar als erste idee gekommen ... denn InvocationTargetException wird nämlich unter anderem von java.lang.reflect.Method.invoke(Object, Object...) geworfen wenn (laut api) die gecallte methode eine exception wirft ... und so weit ich weis arbeitet das applet-plugin nämlich (wie auch der rest der VM) intern mit reflections ...

ergo : verstoß gegen securitymanager ... und nun natürlich mal rätzeln warum ... (was ohne code ja so nicht ging) ...
und da der fehler ja nun offensichtlich war , nämlich das versucht wird mit normalen File-objekten auf daten zuzugreifen , was ja laut sandbox nicht erlaubt ist , konnte man diesen auch einfach lösen in dem man TO zeigt wie es "richtig" geht ...

war erlich gesagt ziemlich belustigt von den ganzen fehlversuchen und einem flame-war applet-vs-object - tags ... und keiner hat auch nur ansatzweise mitkommen wodurch der fehler eigentlich verursacht wurde ... und sowas natürlich immer wieder von usern denen man eigentlich mitlerweile die kompetenz zutrauen würde da das thema ja auch immer wieder gerne gestellt und meist nur mit dem verweis auf die FAQ beantwortet und gelöst wird ...
 

L-ectron-X

Gesperrter Benutzer
Na sowas, das ist jetzt aber nicht konsequent. :D
Genau! Man muss auch daran denken, dass es noch ältere Browser und Java-Versionen gibt. ;)

:oops: :autsch: natürlich... (zu viele Bäume hier. Hab' den Wald gar nicht gesehen
Ach ja... so klappt's dann auch mit <object>
Hehe, ging mir auch so. Noch schlimmer, weil ich genau das sonst auch immer predige... :oops:

@troll: Ja-ja... hast ja Recht. Aber zumindest erhebe ich mich auch nicht dazu, immer alles richtig zu machen. ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Java-Applet Fehler "NoClassDefFoundError"? Java Basics - Anfänger-Themen 1
A Fehler in Applet ??? Java Basics - Anfänger-Themen 5
A applet fehler Java Basics - Anfänger-Themen 2
A Applet Pendel Fehler Java Basics - Anfänger-Themen 3
E Chat Fehler Applet Java Basics - Anfänger-Themen 8
C Fehler bei Applet. Java Basics - Anfänger-Themen 4
D OOP Applet-Start Fehler Java Basics - Anfänger-Themen 2
L Fehler beim Aufruf eines Applet Java Basics - Anfänger-Themen 2
G Fehler im Applet Java Basics - Anfänger-Themen 8
A Applet - Daten ausgeben - Fehler Java Basics - Anfänger-Themen 4
R Unverständlicher Fehler Applet Java Basics - Anfänger-Themen 2
G compilen ??? hilfe ? applet? fehler? Java Basics - Anfänger-Themen 13
M Java-Applet zur Mittelwertberechnung Java Basics - Anfänger-Themen 3
D Java Applet wird nicht im Browser angezeigt Java Basics - Anfänger-Themen 6
M bestehendes Projekt als Applet speichern Java Basics - Anfänger-Themen 2
S Erste Schritte Java - Applet - Rechteck ständig versetzen Java Basics - Anfänger-Themen 14
A Applet Plot für atan erstellen Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
K JDK installieren displays java applet für MAC Java Basics - Anfänger-Themen 10
S Zeichen von abgerundeten Rechtecken auf einem Applet Java Basics - Anfänger-Themen 5
J Einfache einbindung eines Bildes in ein Applet Java Basics - Anfänger-Themen 4
S Klassen Applet extern aufrufen Java Basics - Anfänger-Themen 1
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
C Applet Probleme Java Basics - Anfänger-Themen 1
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
M Erste Schritte Java Applet - HTML Seiten auslesen und in Access Datenbank schreiben? Java Basics - Anfänger-Themen 15
G Applet in ein JSP einbinden Java Basics - Anfänger-Themen 1
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
C Kalender in Applet einfügen Java Basics - Anfänger-Themen 0
J JavaScript findet Applet Methode nicht Java Basics - Anfänger-Themen 2
J Punkte im Java-Applet verbinden Java Basics - Anfänger-Themen 4
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
V Text aus einer .txt dynamisch ins applet einpassen Java Basics - Anfänger-Themen 0
K Applet funz. im Browser nicht Java Basics - Anfänger-Themen 11
M Java-Applet: Bild einbinden (getImage) Java Basics - Anfänger-Themen 0
thet1983 Erste Schritte <param> Tag in Applet Java Basics - Anfänger-Themen 4
F Swing Applet: mehrere Komponenten hinzufügen Java Basics - Anfänger-Themen 1
F Platzieren von Komponenten in Swing Applet funktioniert nicht Java Basics - Anfänger-Themen 3
G Signiertes Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 1
Y Applet: Verschlüsselung Java Basics - Anfänger-Themen 3
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
K Frage zu Applet Java Basics - Anfänger-Themen 3
V While Schleife für ganzes Applet Java Basics - Anfänger-Themen 6
P Applet Histogramm Java Basics - Anfänger-Themen 6
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
G Java Applet aus Eclipse heraus testen? Java Basics - Anfänger-Themen 6
S Applet findet Klasse nicht Java Basics - Anfänger-Themen 7
R Java Applet mit Mausklick ansprechen Java Basics - Anfänger-Themen 3
C Java Applet in html. Pong - old school Spiel Java Basics - Anfänger-Themen 10
S Applet-Objekt ist vor dem Hintergrund Java Basics - Anfänger-Themen 11
F Problem mit Applet Java Basics - Anfänger-Themen 5
A Applet mit Object-Tags einbinden. Java Basics - Anfänger-Themen 3
S Erste Schritte Fenster wechsel im Applet Java Basics - Anfänger-Themen 7
S Applet Deployment Java Basics - Anfänger-Themen 2
H Applet - main()-Methode Java Basics - Anfänger-Themen 4
K Applet wird nicht im Browser und Appletviewer angezeigt Java Basics - Anfänger-Themen 5
L Applet : keine Recht für Zugriff auf Clipboard (trotz Zertifikat) Java Basics - Anfänger-Themen 4
N Erste Schritte Applet zeichnet Bild nicht Java Basics - Anfänger-Themen 10
H Klassen in Eclipse stellt es im Ausgabe-Applet nicht dar Java Basics - Anfänger-Themen 5
L Applet soll Html-File öffnen Java Basics - Anfänger-Themen 2
L NetBeans Applet in html Java Basics - Anfänger-Themen 4
Dogge Start:Applet nicht Initialisiert Java Basics - Anfänger-Themen 11
D Applet beenden Java Basics - Anfänger-Themen 7
Dogge Problem mit paint(Graphics g) im Applet Java Basics - Anfänger-Themen 13
M RSA Applet ohne Cipher Java Basics - Anfänger-Themen 15
B String verschlüsseln - Applet - ohne BASE64 Java Basics - Anfänger-Themen 7
S Methode in Applet starten Java Basics - Anfänger-Themen 2
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
W Probleme mit Java Applet Java Basics - Anfänger-Themen 5
M Applet kann in Browser nicht ausgeführt werden Java Basics - Anfänger-Themen 4
L Applet: Laden unterbricht den Browserfokus (scrollen) Java Basics - Anfänger-Themen 2
Z Applet startet nicht bei Domain mit Umlaut Java Basics - Anfänger-Themen 2
B Externe Libraries fuer Applet ... Pfad eingeben? Java Basics - Anfänger-Themen 23
Helgon ClassNotFound Applet Java Basics - Anfänger-Themen 6
U Applet Signiert und trotzdem Fehlermeldung Java Basics - Anfänger-Themen 18
E Schach in Java-Applet <No main classes found> Java Basics - Anfänger-Themen 5
S Applet Java Basics - Anfänger-Themen 2
S [Applet] Objekte von init bei paint benutzen Java Basics - Anfänger-Themen 9
E Applet wird nicht angezeigt Java Basics - Anfänger-Themen 11
P Problem- Java Applet wird nicht ausgeführt Java Basics - Anfänger-Themen 9
B Applet - Laden eines Java-Fensters bricht ab Java Basics - Anfänger-Themen 6
N Import Problem, Applet will nicht Java Basics - Anfänger-Themen 6
M Applet Eclipse Vollbild Java Basics - Anfänger-Themen 3
K Befehl per Shell an Java-Applet JAR übergeben Java Basics - Anfänger-Themen 16
I Java Applet Java Basics - Anfänger-Themen 8
D Java Applet Dateien auf Server auslesen? Java Basics - Anfänger-Themen 8
L Referenced Libraries korrekt in Java Applet einbinden.. Java Basics - Anfänger-Themen 2
KBJ Java Applet Gästebuch Java Basics - Anfänger-Themen 12
T Java Applet braucht mehrere Minuten zu Start Java Basics - Anfänger-Themen 5
U Applet wird nicht angezeigt Java Basics - Anfänger-Themen 2
J J-Applet, Frage Java Basics - Anfänger-Themen 19
J Applet farblich gestalten Java Basics - Anfänger-Themen 5
M Applet lokaler Festplattenzugriff Java Basics - Anfänger-Themen 25
X Applet - Client/Server Java Basics - Anfänger-Themen 2
M Applet ist nur graues Feld Java Basics - Anfänger-Themen 12
O webserver für Applet und php Java Basics - Anfänger-Themen 7
J Fehlermeldung: Applet nicht initialisiert Java Basics - Anfänger-Themen 24
C Java Applet Probleme Java Basics - Anfänger-Themen 4
S Probleme mit Java 3D Tutorial (Applet) Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben