抛出意外异常:java.lang.reflect.InvocationTargetException

问题描述 投票:0回答:5

我正在开发 GWT-Hibernate 应用程序,我的应用程序可以在集成的 GWT 环境甚至外部服务器 tomcat 上完美运行。我需要在 JBoss V 6.0 上部署我的应用程序。我能够在 JBoss 上成功部署我的应用程序,并且能够一直运行到执行点。在特定的按钮点击应用程序抛出一个意外的异常:

java.lang.reflect.InvocationTargetException

通常,“java.lang.reflect.InvocationTargetException”发生在 java 编译器在 2 个不同的包中发现 2 个具有相同名称的不同类时。当您同时导入这两个类以及尝试创建该类的对象时,它会抛出“

java.lang.reflect.InvocationTargetException
”异常。

现在我不知道编译器在哪里找到我的两个不同的类!有没有什么方法可以让我知道找到两条不同路径的确切位置(即物理路径),这样我就可以删除坏的。

任何帮助将不胜感激。

谢谢你,

问候,

编辑:

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/myProj]] (http-127.0.0.1-8080-4) Exception while dispatching incoming RPC call: com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public com.proj.client.beans.domain.common.transaction.Document com.proj.server.actions.configuration.DocumentAction.saveDocument(com.proj.client.beans.domain.common.transaction.Document,java.lang.Long)' threw an unexpected exception: java.lang.reflect.InvocationTargetException
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378) [:]
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:361) [:]
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:329) [:]
    at com.googlcode.strut2gwtplugin.interceptor.GWTServlet.processCall(GWTServlet.java:138) [:]
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224) [:]
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) [:]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) [:1.0.0.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
    at com.googlcode.strut2gwtplugin.interceptor.GWTInterceptor.intercept(GWTInterceptor.java:49) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) [:]
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) [:]
    at com.proj.server.LoginInterceptor.intercept(LoginInterceptor.java:37) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) [:]
    at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) [:]
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) [:]
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) [:]
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) [:]
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422) [:]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.0.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.0.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.0.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.0.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.0.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [:6.0.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.0.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.0.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.0.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.0.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.0.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.0.0.Final]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_23]
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_23]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_23]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_23]
    at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_23]
    at com.googlcode.strut2gwtplugin.interceptor.GWTServlet.processCall(GWTServlet.java:127) [:]
    ... 36 more
Caused by: java.lang.NullPointerException
    at com.proj.server.actions.configuration.DocumentAction.saveDocument(DocumentAction.java:161) [:]
    ... 41 more
java hibernate gwt jboss
5个回答
2
投票

InvocationTargetException
不会以任何方式自动暗示两个不同包中具有相同名称的两个不同类(事实上,我很难想象这种情况如何导致该异常)。

InvocationTargetException
只是当通过反射调用的方法自身抛出异常时的结果。

你有权访问堆栈跟踪吗?它应该打印反射调用的位置(靠近顶部)和被调用代码抛出的实际异常(靠近底部)。


1
投票

尝试在

jboss-5.0.0.GA

上部署代码

希望有帮助


0
投票

堆栈跟踪的最后一点在这里看起来很相关:

Caused by: java.lang.NullPointerException
at com.proj.server.actions.configuration.DocumentAction.saveDocument(DocumentAction.java:161)

您所描述的异常通常表现为

IncompatibleClassChangeError
或更奇怪的是
Foo.class != Foo.class
当涉及多个类加载器时。


0
投票

正如@Joachim 的回答所说,当使用

InvocationTargetException
调用的方法抛出检查异常时,会抛出
Method.invoke(...)
。实际的异常被包裹在一个
InvocationTargetException
然后被抛出。

在这种特殊情况下,堆栈跟踪告诉我们原始异常是在“DocumentAction.java:161”处抛出的

NullPointerException
。追踪并修复该异常的原因。


我没有看到任何证据表明这与某些类的不同版本有任何关系。一开始我会把它当作一个普通的 NPE,然后试着弄清楚

null
是从哪里来的。


0
投票

我从插件中删除了Bundle-Activator,它解决了这个问题。

Bundle-Activator: exploitation.presentation.ExploitationEditorPlugin$Implementation
© www.soinside.com 2019 - 2024. All rights reserved.