gpt4 book ai didi

java - 如何解决maven中的java.lang.reflect.InitationTargetException

转载 作者:行者123 更新时间:2023-12-01 14:03:43 28 4
gpt4 key购买 nike

我的网络应用程序在 Eclipse 和 Netbeas 中工作正常,但是当我在包含依赖项后尝试在 Maven 中执行时,它会抛出异常。依赖项是。

     <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-bundle-jaxrs</artifactId>
<version>2.1.2</version>
</dependency>

我包含这个依赖项是因为我正在使用ResponseBuilderImpl 构建器 = new ResponseBuilderImpl()
如果我删除构建器和依赖项,那么它在 Maven 中工作,但是当我包含时,它会给出异常。这是我的其余示例剩余代码。

       @Path("/{userId}/logout")
@PUT
public Response logout(@PathParam ("userId") String userId,@Context HttpServletRequest request,@Context HttpServletResponse response)throws ServletException, IOException
{
ResponseBuilderImpl builder = new ResponseBuilderImpl();
log.debug("request user id for logout::"+userId);
MapUserLogin mapUserLogin=new MapUserLogin();
mapUserLogin.removeMap(userId);
log.debug("after remove userinformation from hashmap");

System.out.print("LOGOUT SUCCESSFULLUY");
builder.status(200).entity("SUCCESS");
return builder.build();

}

所以对于 ResponseBuilderImpl 我导入了 import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl如果我删除并只返回字符串类型,那么它就可以工作,但是当我使用上面的代码时,只有 Maven 抛出异常。异常(exception)是。

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-RS API 没有可用的“简单”工厂方法。我建议首先尝试以这种方式创建 Response 并检查它是否有效或者是否存在更微妙的问题。

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

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

关于java - 如何解决maven中的java.lang.reflect.InitationTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110451/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com