当前位置: 首页 > 知识库问答 >
问题:

在wildfly中实例化ClientBuilder期间发生ClassCastException

於意蕴
2023-03-14

我有一个Web应用程序,正在部署到野飞8.1.0最终。它使用Spring、RESTEasy等。在代码中的一个地方,需要一个ClientBuilder来创建一个javax.ws.rs.client.Client

   public class CustomClientImpl implements CustomClient {
      // [...]
      private Client client = ClientBuilder.newClient();
      // [...]
   }

这将生成以下嵌套异常(跳过前5)。简而言之,错误是来自

jar:file:/c:/Programs/wildfly-8.1.0。Final/modules/system/layers/base/javax/ws/rs/api/main/jaxrs-api-3.0.8。最终的罐子/javax/ws/rs/client/ClientBuilder。班

vfs:/c:/Programs/wildfly-8.1.0。Final/bin/content/ybsearch。war/WEB-INF/lib/jaxrs-api-3.0.8。最终的jar/javax/ws/rs/client/ClientBuilder。班

考虑到它在相同的jar文件中是同一个类,它们似乎应该是兼容的。[??]

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.lilblackbook.search.api.response.ListingProcessorImpl]: Constructor threw exception; nested exception is java.lang.LinkageError: ClassCastException: attempting to cast jar:file:/c:/Programs/wildfly-8.1.0.Final/modules/system/layers/base/javax/ws/rs/api/main/jaxrs-api-3.0.8.Final.jar!/javax/ws/rs/client/ClientBuilder.class to vfs:/c:/Programs/wildfly-8.1.0.Final/bin/content/ybsearch.war/WEB-INF/lib/jaxrs-api-3.0.8.Final.jar/javax/ws/rs/client/ClientBuilder.class
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:267)
        ... 59 more
Caused by: java.lang.LinkageError: ClassCastException: attempting to cast jar:file:/c:/Programs/wildfly-8.1.0.Final/modules/system/layers/base/javax/ws/rs/api/main/jaxrs-api-3.0.8.Final.jar!/javax/ws/rs/client/ClientBuilder.class to vfs:/c:/Programs/wildfly-8.1.0.Final/bin/content/ybsearch.war/WEB-INF/lib/jaxrs-api-3.0.8.Final.jar/javax/ws/rs/client/ClientBuilder.class
        at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:97)
        at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:114)
        at com.lilblackbook.search.api.skynet.CustomClientImpl.<init>(CustomClientImpl.java:56)
        at com.lilblackbook.search.api.response.ListingProcessorImpl.<init>(ListingProcessorImpl.java:38)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [rt.jar:1.7.0_21]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) [rt.jar:1.7.0_21]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [rt.jar:1.7.0_21]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:525) [rt.jar:1.7.0_21]
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)

我的pom包括对

  <dependency>
     <groupId>org.jboss.resteasy</groupId>
     <artifactId>jaxrs-api</artifactId>
     <version>3.0.8.Final</version>
     <!--scope>provided</scope-->
  </dependency>

给定jaxrs-api-3.0.8。Final.jar是野飞提供的,我尝试了提供作为依赖范围,但生成一个ClassNotFoundExc0019。当我包含它时,会生成上面详细描述的ClassCastExcture

这些信息够了吗?有什么想法吗?谢谢

共有1个答案

双俊人
2023-03-14

为了解决这个错误,我必须更改用于JaxRS客户端的实现。

我从泽西岛出发:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>3.0.0-M6</version>
    <scope>test</scope>
</dependency>

致Smallrye:

<dependency>
   <groupId>io.smallrye</groupId>
   <artifactId>smallrye-rest-client</artifactId>
   <version>1.2.2</version>
</dependency>
 类似资料:
  • 在Spring应用程序中,可以检索所有(?)带有。当然,这只有在创建了所有bean之后才有可能。 所以,如果我在Bean的构造函数中调用这个方法,我必须很幸运,成为最后一个被创建的Bean,能够访问所有的Bean。 就我对SpringBean生命周期的理解而言,在初始化Bean之前,有一个创建BeanDefinitions的阶段。 如何在Bean的构造函数中检索所有已创建的Bean定义? 我还可以

  • 问题内容: 采访中有人问我这个问题。他们想知道的是,当用户调用malloc(4)分配4个字节的内存时,操作系统(Linux)如何响应?哪个子系统响应此系统调用? 我告诉他,内存管理子系统将为malloc()提供服务。malloc()实现将遍历空闲内存(物理内存)列表,我们将其称为空闲列表,并找到一个大于或等于4字节的适当块。一旦找到这样的块,它将被从空闲列表中删除并添加到已用列表中。然后,该物理内

  • “异常信息” 在WebDriver.dll中发生类型为“System.InvalidOperationException”的未处理异常 附加信息:没有这样的驱动程序(NoSuchDriver) OpenQa.Selenium.edge.EdgedRiver..ctor(字符串edgeDriverDirectory,EdgeOptions选项) ConsoleApplication.Program.

  • 本文向大家介绍Android开发中Widget的生命周期实例分析,包括了Android开发中Widget的生命周期实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了Android开发中Widget的生命周期。分享给大家供大家参考,具体如下: Widget是android中桌面小控件,创建时必须继承AppWidgetProvider,AppWidgetProvider其实就是继承了Br

  • 1. 前言 在之前的小节中我们介绍了 Vue 实例,本小节我们一起来了解一下 Vue 实例的生命周期。包括生命周期的几个阶段,以及各个阶段触发时机和作用。深入理解 Vue 的生命周期是本小的难点,同学们不仅需要知道生命周期的执行顺序,还要理解各生命周期的作用。 2. 慕课解释 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据

  • 本文向大家介绍Android开发之时间日期操作实例,包括了Android开发之时间日期操作实例的使用技巧和注意事项,需要的朋友参考一下 相信对于手机的时间日期设置大家一定都不陌生吧,今天举一个关于时间日期设置的示例,其中有些许不完善之处,例如如何使设置的时间日期和手机系统同步等。感兴趣的读者可以根据自身经验加以完善。 现来看看具体示例,希望对大家有所帮助。 首先是时间设置: .java文件(Mai