java.lang.reflect.InvocationTargetException 怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.reflect.InvocationTargetException 怎么解决相关的知识,希望对你有一定的参考价值。

严重: End event threw exceptionjava.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.tomcat.util.IntrospectionUtils.callMethodN(IntrospectionUtils.java:959) at org.apache.catalina.startup.CallMethodMultiRule.end(WebRuleSet.java:789) at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1138) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocume

参考技术A InvocationTargetException 是一种包装由调用方法或构造方法所抛出异常的受查异常。这个异常并不是Eclipse插件开发特有的,而是标准JDK中的,它定义在 java.lang.reflect包下。在进行Java开发的时候很少会接触到这个异常,不过在进行Eclipse插件开发中则不同,很多API都声明抛出此类异常,因此必须对此异常进行处理。

例如,我们开发一个方法用来统一处理异常:
private static void handleException(Exception e)

MessageDialog.openError(Activator.getDefault().getWorkbench()
.getDisplay().getActiveShell(), "error", e.getMessage());
e.printStackTrace();


我们发现当传递来的参数e为InvocationTargetException 的时候弹出的对话框中的消息是空的,查看InvocationTargetException 的源码得知InvocationTargetException 并没有覆盖getMessage方法,所以消息当然是空的了。我们需要调用InvocationTargetException 的getTargetException方法得到要被包装的异常,这个异常才是真正我们需要的异常。修改代码如下所示:
private static void handleException(Exception e)

String msg = null;
if (e instanceof InvocationTargetException)

Throwable targetEx = ((InvocationTargetException) e)
.getTargetException();
if (targetEx != null)

msg = targetEx.getMessage();

else

msg = e.getMessage();

MessageDialog.openError(Activator.getDefault().getWorkbench()
.getDisplay().getActiveShell(), "error", msg);
e.printStackTrace();
本回答被提问者采纳
参考技术B 看了网上百度的很多答案,所版本不对的,真他么扯淡,我的解决了,是因为实体类的据的get,set方法的数据类型不对,比如定义了private Double str;set,get方法是指定类型的时候就不能指定为double类型,java的Double和double还是不一样的

以上是关于java.lang.reflect.InvocationTargetException 怎么解决的主要内容,如果未能解决你的问题,请参考以下文章