如何在maven中解析java.lang.reflect.InvocationTargetException

如何在maven中解析java.lang.reflect.InvocationTargetException,java,rest,maven,Java,Rest,Maven,MyWeb应用程序在eclipse和Netbeas中运行良好,但当我尝试在maven中执行时,会包含依赖项及其引发的异常 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-bundle-jaxrs</artifactId> <version>2.1.2</version> <

MyWeb应用程序在eclipse和Netbeas中运行良好,但当我尝试在maven中执行时,会包含依赖项及其引发的异常

     <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-bundle-jaxrs</artifactId>
       <version>2.1.2</version>
     </dependency>
因此,对于ResponseBuilderImpl,我导入了import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl 如果我删除并只返回字符串类型,那么它就工作了,但是当我使用上面的代码时,只有maven抛出异常,异常是

INFO: Deployed Application(path=C:\App\apache-tomee-jaxrs-1.5.2\webapps\Snefocaremaven)
Oct 01, 2013 10:51:10 AM org.apache.openejb.observer.ObserverManager fireEvent
SEVERE: error invoking org.apache.openejb.observer.ObserverManager$Observer@21d4f61d
java.lang.reflect.InvocationTargetException

除非您有充分的理由使用CXF特定的
ResponseBuilderImpl
,否则您应该使用JAX-RS
Response
类的静态工厂方法来获取ResponseBuilder,例如

Response response = Response.status(200).entity("SUCCESS").build();
JAX-RS框架将使用内部机制来加载和初始化正确的实现。请注意,除非您使用的是专有功能,否则在编译时不应该需要CXF依赖项

更新

ResponseBuilder partial = Response.status(200);
将创建一个可变生成器实例,该实例可以进一步修改。请注意,您还应该能够修改生成器上的状态。不幸的是(?)JAX-RSAPI中没有可用的“普通”工厂方法。我建议首先尝试用这种方式创建
响应
,然后检查它是否有效,或者是否存在更微妙的问题

ResponseBuilder partial = Response.status(200); // mock status
ResponseBuilder filled = fillResponse(partial); // whatever the method is called
return filled.build();

然后,您可以考虑进行重构,以避免创建具有模拟状态的生成器,例如,将整个响应构建移动到一个知道实体和响应代码的方法中。

完整堆栈跟踪此处链接:只有当我在rest服务中使用ResponseBuilderImpl时,才会出现此异常。我只给出了示例代码,但在创建响应对象后,我需要传递到其他方法。并且实体和状态是store in response object,因此我装箱responsebuilderimpl对象并传递给方法,然后从生成器创建响应对象并发送回客户端。我无法按照您的说法创建响应对象。因为我必须将响应对象传递给其他方法。因此,我必须使用JAX-RS API使用此responsebuilderimpl工作,因此servlet容器配置存在问题。当您启动tomcat实例或实际向服务发送请求时,是否会发生异常?也许您缺少运行时依赖项,您应该查看openejb文档/确保您拥有最新版本的tomEE。谢谢。它在eclipse和maven中都可以正常工作。但是我的问题是为什么eclipse支持而不支持maven。我怀疑maven构建中缺少依赖项,这是在eclipse中执行项目时出现的。
ResponseBuilder partial = Response.status(200); // mock status
ResponseBuilder filled = fillResponse(partial); // whatever the method is called
return filled.build();