# InvocationTargetException?



## richard42 (13. Nov 2008)

Hi,

Ich will ein signiertes Applet mit Schreibrechten zu einem unsignierten in der Sandbox machen. Wenn ich es signiere funzt alles wie gehabt. Unsigniert wirft es eine InvocationTargetException - allerdings ganz ohne Stacktrace. Ich weiss also nicht die Bohne was das ausloest.

Irgendeine Idee wie ich sowas debuggen soll?


----------



## SlaterB (13. Nov 2008)

System.out.println()


du hast 4000 Zeilen Code?
dann mach ein System.out.println() in Zeile 2000

du hast noch 2000 Zeilen Code (erste Häfte oder zweite Hälfte)?
dann mach ein System.out.println() in Zeile 1000

500

250

usw., eine kleine Aufgabe,

im echten Programm hat man natürlich selten x Zeilen Code hintereinander,
also eine Meldung zu Beginn aller ActionListener und sonstiger wichtiger Methoden

analog per Debugger falls das beim Applet geht


----------



## Murray (13. Nov 2008)

richard42 hat gesagt.:
			
		

> Unsigniert wirft es eine InvocationTargetException - allerdings ganz ohne Stacktrace. Ich weiss also nicht die Bohne was das ausloest.


Eine Exception hat immer einen Stacktrace - ob der ausgegeben wird oder nicht, ist eine Frage des Codes, mit dem die Exception behandelt wird.

Hast Du im Code irgendwo etwas wie

```
} catch ( Exception e) {
  System.out.println( e);
}
```
stehen? Falls ja, dann ändere das in

```
} catch ( Exception e) {
  e.printStackTrace( System.out);
  System.out.flush();
}
```


----------



## Tobias (13. Nov 2008)

In Eclipse einen Exception-Breakpoint für die InvocationTargetException setzen. Gibt zwar nicht zwangsläufig die richtige Stelle, aber zumindest kannst du dann im Variable-View den Stacktrace angucken.


----------



## Milbo(nichteingeloggt) (20. Jan 2009)

Also Murray ich verstehe nicht, wie das gehen soll.

Wenn e = null ist,.. wie soll von null.printStackTrace etwas geschrieben werden könne? Da bekomme ich doch sicher nur ne Nullpointerexception.

Desweiteren bin ich zu bled, das ganze als String zu erhalten,.... weil mit System.out. können meine User nix anfangen, sieht ja keiner,....  Wäre nett, wenn mir das einer erklärt.

Wie kann es passieren, dass auf den meisten Rechnern mein Programm problemlos startet und auf einen Rechner beim starten ne InvocationTargetException wirft,.. seltsam.

Milbo


----------



## SlaterB (20. Jan 2009)

bei
> } catch ( Exception e) { 
kann e kaum null sein, oder? 

-------


```
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        Exception e = new NullPointerException();
        StringWriter w = new StringWriter();
        e.printStackTrace(new PrintWriter(w));
        w.flush();
        w.close();

        String st = w.toString();
        System.out.println(st);
    }
}
```


----------



## Tobias (20. Jan 2009)

e ist in diesem Konstrukt sicher nie null. Das ganze als String wirst du nur auf Umwegen bekommen, aber du kannst mit getStackTrace() ein Array von StackTraceElement abfragen und dieses entsprechend behandeln.


----------



## Milbo(nichteingeloggt) (20. Jan 2009)

Super vielen Dank,

Aber warum zeigt dann bei mir mein Errorfenster ne null? Normalerweise steht da nämlich der Stacktrace,..

Ahh,... ich sehe das Problem in meiner Untermethode,..

Ich habe dort e.getMessage(); und die ist null,... dachte immer, die habe da einfach so e ausgegeben.

Thanks !


----------



## Ebenius (20. Jan 2009)

Off Topic: 





			
				Murray hat gesagt.:
			
		

> Eine Exception hat immer einen Stacktrace - ob der ausgegeben wird oder nicht, ist eine Frage des Codes, mit dem die Exception behandelt wird.


Es sei denn, es handelt sich um einen OutOfMemoryError in JRE 5 oder vorher: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4753347


----------

