# InvocationException im Thread (innerhalb von call() einer Callable Klasse)



## johannes.lichtenberger (18. Dez 2009)

Hi,

so das nächste Problem macht sich leider breit:


```
public final class Parser implements Callable<Picture> {
  ...

  public Parser(final IReadTransaction rtx) throws TreetankException {
    mRTX = rtx;
    picture = new Picture();
  }

  public Picture call() {
    System.out.println("called!");
    // Move cursor to longitude element.
    if (!(mRTX.moveToFirstChild() && mRTX.moveToRightSibling())) {
      throw new IllegalStateException("Moving inside parser failed!");
    }

    parseElement(mRTX, "latitude");
    ...
  }
  
  private void parseElement(final IReadTransaction mRTX, final String name) {
    final long nodeKey = mRTX.getNode().getNodeKey();
    ...
  }
}
```

Ich bekomme direkt beim Aufruf von parseElement(...) eine Exception:

com.sun.jdi.InvocationException occurred invoking method.

Sobald ich im Eclipse debugger auf die Instanz mRTX klicke steht obige Exception meldung drin. Leider habe ich mit Threads noch kaum Erfahrungen gesammelt, aber so langsam frage ich mich ob ich das ganze nicht einfach wieder auf Single threaded umstelle :-/

Ich bin mir gar nicht so sicher ob ich das "final" Schlüsselwort verwenden darf, da ja mehrere Instanzen vom Parser erstellt werden und call() dann mehrfach und letztendlich auch parseElement(...) mehrfach aufgerufen wird.

Viele Grüße,
Johannes


----------



## SlaterB (18. Dez 2009)

du hast eine Menge von unbekannten Klassen und irgendwo dort tritt eine Exception auf,
wieso sollte da irgendjemand etwas sinnvolles zu sagen können?

der letzte Thread
http://www.java-forum.org/allgemeine-java-themen/93408-threading-callables.html
auf den du dich halb beziehst, ihn aber nicht nennst, scheint mir grob überflogen auch nichts genaueres anzugeben

eine google-Suche nach com.sun.jdi führt zu 
com.sun.jdi Class Hierarchy (Java Debug Interface)
hat das Problem also vielleicht nur mit einem Debugger zu tun und nichts mit dem normalen Programmablauf?
spätestens wenn ein Debugger zusätzliche Probleme einbaut, sollte man ihn doch lieber gar nicht verwenden


----------



## ThreadPool (18. Dez 2009)

Dann stell in Eclipse im Debugmodus mal ein das bei dieser Exception der Programmablauf anhalten werden soll, dann kannst du dir den aktuellen Aufrufstack mal ansehen. So wie das aussieht braucht die parse-Methode den mRTX nicht als Argument, du hast den doch als Instanzvariable angelegt.


----------

