Java.lang.reflect.InvocationTargetException

Alguém saberia me explicar que erro é esse
java.lang.reflect.InvocationTargetException

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/InvocationTargetException.html

Ocorre quando há algum problema na chamada de um método via Reflection.

Isso mesmo. É o “wrapper” para Exception que foi jogada no método executado via Reflection.

package examples;

import java.lang.reflect.*;

public class ReflectionExample {
  
  public ReflectionExample() {
  }
  
  public static void main(String[] args) {
    ReflectionExample ref = new ReflectionExample();
    Class[] paramTypes = new Class[1];
    paramTypes[0] = Integer.TYPE;
    Class ourClass = ref.getClass();
    Method method = null;
    try {
      method = ourClass.getMethod("metodoChamadaViaReflection", paramTypes);
    }
    catch (SecurityException ex) {
      ex.printStackTrace();
    }
    catch (NoSuchMethodException ex) {
      ex.printStackTrace();
    }
    Object[] params = new Object[1];
    params[0] = new Integer(-1);
    
    try {
      method.invoke(ref, params);
    }
    catch (InvocationTargetException ex1) {
      System.out.println("InvocationTargetException: " + ex1.getTargetException().getMessage());
    }
    catch (IllegalArgumentException ex1) {
      ex1.printStackTrace();
    }
    catch (IllegalAccessException ex1) {
      ex1.printStackTrace();
    }

  }
  
  public void metodoChamadaViaReflection(int valor) throws Exception {
    if(valor < 0) throw new Exception("o valor foi menos que zero.");
  }

}

O nosso metodo aqui que tá sendo chamado, joga um exception, e daí, Reflection joga um InvocationTargetException com nosso Exception por dentro.

Faz sentido?

System.out.println("InvocationTargetException: " + ex1.getTargetException().getMessage());

Vai imprimir

[quote]InvocationTargetException: o valor foi menos que zero.
[/quote]
na tela.

Como poderia solucionar este problema ???

Obrigado

Olá,

A solução depende do seu problema, e a InvocationTargetException provavelmente não é o problema. É só consequencia. Ajudaria se você pudesse descrever seu problema mais detalhadamente.

[]s,
Sami

Possivelmente o método que está sendo invocado pelo refletor, possui algum tratamento de excessões. Remova-o, e verifique se era isso mesmo. Abraços.

Olá !
No meu caso isso aconteceu qdo. trouxe um projeto do serviço para casa…
Depois que abri o projeto, ao clicar com o botão direito do mouse em um componente ( textField por exemplo ), ocorre o erro.
Alguém tem idéia do que possa ser ?
Att.,
Kerone Jr.
:roll:

kerone, voce conseguiu resolver esse problema? Estou com o mesmo problema, trouxe o codigo do lab. para casa e começou a disparar essa exception.
Obrigado!

pablotiburcio, no meu caso havia uma diferença nas bibliotecas que utilizava no serviço e as que tinha em casa. Depois que deixei o ambiente de casa igual ao do serviço o problema não aconteceu mais.
[]'s!

Vou verificar isso então, Obrigado!