【问题标题】:threw an unexpected exception: java.lang.reflect.InvocationTargetException抛出了一个意外的异常:java.lang.reflect.InvocationTargetException
【发布时间】:2011-02-09 12:50:03
【问题描述】:

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

当 java 编译器在 2 个不同的包中发现 2 个同名的不同类时,通常会发生“java.lang.reflect.InvocationTargetException”。当您一次导入两个类并且尝试创建该类的对象时,它会引发“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.lang.reflect.InvocationTargetException 是一个通用异常,它可能有很多原因。请发布完整的堆栈跟踪,没有它我们不可能提供帮助。
  • 你能发布堆栈跟踪吗?跟踪中通常有根本原因。
  • InvocationTargetException 在通过反射调用的方法或构造函数抛出异常时抛出。您需要找到InvocationTargetException 的原因才能了解您的呼叫失败的原因。
  • 我已经包含堆栈跟踪。请帮忙,

标签: java hibernate gwt jboss


【解决方案1】:

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

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

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

【讨论】:

  • 我已经包含堆栈跟踪。请帮忙,
【解决方案2】:

尝试在jboss-5.0.0.GA上部署代码

希望对你有帮助

【讨论】:

    【解决方案3】:

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

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

    当涉及多个 ClassLoader 时,您所描述的异常通常表现为 IncompatibleClassChangeError 或更奇怪的是 Foo.class != Foo.class。

    【讨论】:

    • 我同意!...我的代码 DocumentAction.saveDocument(DocumentAction.java:161) 指的是具有布尔列 activity_schedule_status 的 ActivitySchedule 类,我们已将其重命名为 activityScheduleStatus 但它仍然指的是旧的一并给我错误原因:java.sql.SQLException:无效的列名'activity_schedule_status',现在不可用。
    • 听起来像是建筑环境病。完全干净的结帐和构建是否显示相同的问题?您可以注册一个Instrumentation 实现,该实现注入一个无操作ClassFileTransformer,它将正在使用的ClassLoader 强制转换为URLClassLoader 以检查其getURLs() 方法。
    【解决方案4】:

    正如@Joachim 的回答所说,InvocationTargetException 在使用Method.invoke(...) 调用的方法引发检查异常时引发。实际的异常被包裹在 InvocationTargetException 中,然后被抛出。

    在这种特殊情况下,堆栈跟踪告诉我们原始异常是在“DocumentAction.java:161”处引发的NullPointerException。追踪并修复该异常的原因。


    我没有看到任何证据表明这与某些课程的不同版本有关。我会把它当作一个普通的 NPE 开始,并尝试找出 null 的来源。

    【讨论】:

    • 令人惊讶的是,这段代码在 GWT 开发模式甚至在 Tomcat 中都能正常工作!...我已经在 J​​Boss 上部署了这个应用程序,我正面临这个问题....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多