RETEasy 客户端 + NoSuchMethodError

2024-01-22

我正在尝试编写简单的 RESTEasy 客户端。下面给出的是示例代码:

Client client = ClientBuilder.newBuilder().build();
WebTarget target = client.target("http://localhost:8080/context/path");
Response response = target.request().post(Entity.entity(object, "application/json"));

//Read output in string format
String value = response.readEntity(String.class);

我在行中遇到异常:

Client client = ClientBuilder.newBuilder().build();

我在控制台中看到以下错误:

16:07:57,678 ERROR [stderr] (http-localhost/127.0.0.1:8080-1) java.lang.NoSuchMethodError: org.jboss.resteasy.spi.ResteasyProviderFactory.<init>(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)V

16:07:57,679 ERROR [stderr] (http-localhost/127.0.0.1:8080-1)   at org.jboss.resteasy.client.jaxrs.internal.ClientConfiguration.<init>(ClientConfiguration.java:44)

16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1)   at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:317)

16:07:57,680 ERROR [stderr] (http-localhost/127.0.0.1:8080-1)   at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:49)

我在 pom.xml 中添加了 Resteasy 客户端依赖项:

  <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-client</artifactId>
      <version>3.0.8.Final</version>
  </dependency>

我的代码部署在 JBOSS EAP 6.1 上。 JDK版本是1.7。

更新: 我还尝试在我的pomn中添加resteasy jax-rs依赖项我还通过在我的web.xml中添加以下行来验证是否启用了ResteasyProviderFactory:

  <listener>
    <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
  </listener>

请找到下面的 Maven 依赖项列表:

<dependencies>

    <dependency>
        <groupId>org.jboss.spec.javax.ejb</groupId>
        <artifactId>jboss-ejb-api_3.1_spec</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <scope>provided</scope>
    </dependency>

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

    <dependency>
      <groupId>org.jboss.resteasy</groupId>
      <artifactId>resteasy-client</artifactId>
      <version>3.0.8.Final</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.jboss.arquillian.protocol</groupId>
        <artifactId>arquillian-protocol-servlet</artifactId>
        <scope>test</scope>               
    </dependency>

</dependencies>

但这不起作用。

从例外情况来看,我无法弄清楚缺少什么。我无法在 SO 或任何其他论坛上找到有关此问题的任何参考资料。如果您之前看到过此问题并且知道如何解决它,请告诉我。 谢谢。


2014 年 6 月 11 日更新:

参考后这个博客 http://theholyjava.wordpress.com/2014/02/04/jboss-modules-suck-its-impossible-to-use-custom-resteasyjax-rs-under-jboss-7/通过排除一些resteasy和jackson模块,我尝试创建类似的jboss-deployment-struct.xml并将其保存在我的EJB项目中的META-INF文件夹中。这解决了我的 NoSuchMethodError for "org.jboss.resteasy.spi.ResteasyProviderFactory.(Lorg/jboss/resteasy/spi/ResteasyProviderFactory;)" 问题。我的 jboss-deployment-struct.xml 的结构是:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
   <deployment>
       <exclude-subsystems>
           <subsystem name="resteasy"/>
       </exclude-subsystems>
     <exclusions>
       <!-- <module name="org.apache.log4j" /> -->
       <module name="org.apache.commons.logging"/>
       <module name="org.jboss.as.jaxrs"/>
       <module name="org.jboss.resteasy.resteasy-jaxrs"/>
       <module name="org.jboss.resteasy.resteasy-cdi"/>
       <!-- <module name="org.jboss.resteasy.jackson-provider"/>
       <module name="org.jboss.resteasy.resteasy-atom-provider"/>
       <module name="org.jboss.resteasy.resteasy-hibernatevalidator-provider"/>
       <module name="org.jboss.resteasy.resteasy-jaxb-provider"/>
       <module name="org.jboss.resteasy.resteasy-jettison-provider"/>
       <module name="org.jboss.resteasy.resteasy-jsapi"/>
       <module name="org.jboss.resteasy.resteasy-multipart-provider"/>
       <module name="org.jboss.resteasy.resteasy-yaml-provider"/>
       <module name="org.codehaus.jackson.jackson-core-asl"/>
       <module name="org.codehaus.jackson.jackson-jaxrs"/>
       <module name="org.codehaus.jackson.jackson-mapper-asl"/>
       <module name="org.codehaus.jackson.jackson-xc"/>
       <module name="org.codehaus.jettison"/>
       <module name="javax.ws.rs.api"/> -->
     </exclusions>
   </deployment>
 </jboss-deployment-structure>

但现在我看到其他方法有类似的异常:

Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.Response.readEntity(Ljava/lang/Class;)Ljava/lang/Object;
    at com.example.data.DemoProxyBean.callDemoTx(DemoProxyBean.java:59) [demo-service.jar:]
    at com.example.data.DemoProxyBean$Proxy$_$$_WeldClientProxy.callDemoTx(DemoProxyBean$Proxy$_$$_WeldClientProxy.java) [demo-service.jar:]

我在行中看到了这个异常:

String value = response.readEntity(String.class);

奇怪的是,当我检查“response.readEntity(String.class)”时,在调试时,我可以看到字符串值。但是当我尝试进入下一行时,我看到了这个错误。您能指导一下吗,可能是什么问题?

进一步更新:

我提到了这个JBOSS 问题跟踪器 https://issues.jboss.org/browse/WFLY-1304。但它与WildFly有关,而不是EAP服务器。它要求我们排除模块“javaee-api”。我尝试排除“javaee-api”模块,但它也不起作用。


这个问题是由于您的应用程序和 Jboss EAP 模块之间的 Resteasy Client 实现版本不同而引发的。您正在使用最新版本的 jaxrs-client,但 JBoss EAP 6.3.0 使用非常旧的版本 (resteasy-jaxrs-2.3.8.Final-redhat-3)。

只需下载最新的 JBoss Resteasy 实现包(如下所示:resteasy-jboss-modules-3.0.9.Final.zip)并解压缩到 EAP Modules 文件夹中,替换现有文件 module.xml 并添加新的 jar。请记住替换 ZIP 中的所有 JAR(不仅仅是 Resteasy-jaxrs)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RETEasy 客户端 + NoSuchMethodError 的相关文章

  • Spring Security 自定义身份验证 - AuthenticationProvider 与 UserDetailsS​​ervice

    据我所知 当您想要在 Spring Security 中进行自定义身份验证时 您可以实现自定义AuthenticationProvider或定制UserDetailsService Autowired public void configu
  • Spring MVC - 自动查找验证器

    假设我有一个像这样的示例实体类 public class Address 和相应的验证器 Component public AddressValidator implements Validator Override public bool
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • Java:将二维字符串数组打印为右对齐表格

    是什么best打印a的单元格的方法String 数组作为右对齐表 例如 输入 x xxx yyy y zz zz 应该产生输出 x xxx yyy y zz zz 这似乎是一个should能够完成使用java util Formatter
  • grails 中的 log4j:如何登录文件?

    我的 grails config groovy 中有这个 log4j 配置 log4j error org codehaus groovy grails web servlet controllers org codehaus groovy
  • 对象映射器 - YAMLFactory - 由于缺少 _createContentReference 方法而出现异常

    我正在使用最新的 2 13 0 版本的 jackson 当我尝试解析 YAML 文件时 出现此异常 java lang NoSuchMethodError com fasterxml jackson core io ContentRefer
  • Java:如果数组大小未知,如何初始化?

    我要求用户输入 1 到 100 之间的一些数字并将它们分配到一个数组中 数组大小未初始化 因为它取决于用户输入数字的次数 我应该如何分配数组长度 如果用户输入 5 6 7 8 9 5 个数字 则 int list becomes int l
  • SwingUtilities.invokeLater

    我的问题与SwingUtilities invokeLater 我应该什么时候使用它 每次需要更新 GUI 组件时都必须使用吗 它到底有什么作用 是否有替代方案 因为它听起来不直观并且添加了看似不必要的代码 Do I have to use
  • 在实现接口的类上强制使用单例模式

    我最好用一个例子来解释这个问题 我有一个接口模型可用于访问数据 模型可以有不同的实现 可以以各种格式表示数据 例如 XMl txt 格式等 Model不关心格式 可以说这样的一个实现是myxml模型 现在我想强迫myxml模型以及其他所有实
  • 覆盖Java中的属性[重复]

    这个问题在这里已经有答案了 在 Java 中 我最近有几个项目 我使用了这样的设计模式 public abstract class A public abstract int getProperty public class B exten
  • java charAt() 和startsWith() 哪个更快? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题是 如果我想检查特定索引中字符串的一个字符 仅检查一个字符 哪种方法非常有效charAt or startsWith 我的意思是 据我所
  • Unix 纪元时间转 Java Date 对象

    我有一个包含以下内容的字符串UNIX 纪元时间 https en wikipedia org wiki Unix time 我需要将其转换为 Java Date 对象 String date 1081157732 DateFormat df
  • 在进行堆转储后,如何在发生 OutOfMemoryError 时重新启动 JVM?

    我知道关于 XX HeapDumpOnOutOfMemoryError https stackoverflow com q 542979 260805JVM 参数 我也知道 XX OnOutOfMemoryError cmd args cm
  • 使用 Retrofit 获取原始 HTTP 响应

    我想从我的 API REST 获取原始 http 响应 我尝试过这个界面 POST login FormUrlEncoded Call
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • Spring Data MongoDB 和批量更新

    我正在使用 Spring Data MongoDB 并且想要执行批量更新 就像此处描述的那样 http docs mongodb org manual reference method Bulk find update Bulk find
  • Bipush 在 JVM 中如何工作?

    我知道 iload 接受整数 1 到 5 但是如何使用 bipush 指令扩展到更高的数字 特定整数如何与字节码一起存储 有几种不同的指令可用于推送整数常量 最小的是iconst 指令 这些只是一个字节 因为该值是在操作码本身中编码的 ic
  • 如何在 tomcat 上部署 Java Web 应用程序 (.war)?

    我有一个 warJava Web 应用程序的文件 现在我想将它上传到我的 ftp 服务器 以便我可以执行它 我应该执行哪些步骤来运行它 webapp的上下文路径是 mywebapp Edit 实际上 我的 ftp 服务器名称是ftp bil
  • Selenium Webdriver - 单击多个下拉菜单时出现陈旧元素异常,而 HTML DOM 不会更改

    我尝试自动化一个场景 其中条件是我必须从下拉列表中选择一个选项 然后它旁边有另一个下拉列表 我必须单击下一个下拉列表中的一个选项才能启用按钮 我尝试使用代码 但它仅单击第一个选项 并显示错误为过时的元素引用 元素未附加到页面文档 请帮忙 如
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado

随机推荐

  • 使 git pull (rebase) 默认仅从当前下游分支拉取

    我正在使用我发现的方法默认情况下拉 rebase http d strelau net post 47338904 git pull rebase by default进行 git pull 时 现在我想让 git pull 默认情况下仅拉
  • 获取房产指南

    这是上下文 我正在尝试为 经过身份验证的用户 组设置一堆属性 为此 我编写了以下脚本 GETTING AUTHENTICATED USERS SID sid1 S 1 5 11 objSID1 New Object System Secur
  • @ImportAutoConfiguration 和 @Import 有什么区别

    是不是真的org springframework boot autoconfigure ImportAutoConfiguration是改进的替代品org springframework context annotation Import因
  • 中央流光按钮

    如何使用 Streamlit 将按钮居中以使该按钮仍然可单击 这是返回随机数的按钮的一个小示例 import streamlit as st import numpy as np if st button Click rand np ran
  • 运行简单后台任务的最简洁方法?

    我已经看到至少五种模式 通过它们您可以在工作线程中运行一些代码 最简单 new Thread new Runnable public void run start 我们可以延长AsyncTask 我们有AsyncTaskLoader和别的L
  • 通过 COM 从 Ruby 调用 C# .dll

    我正在尝试在 Ruby 代码中调用 C 中的一些方法 首先 我在 Visual Studio 2008 中创建一个 dll 我在构建时注册 COM 互操作 为了测试这个新过程 我用 C 创建了一个简单的 DivideTwo 小方法 publ
  • SVG 的 PHP CSS 控制

    我正在尝试使用 CSS 来控制 svg 文件的颜色 我使用 html 来调用 svg 我页面上的颜色由 php 控制 其他所有内容都在 php 中 我确信我一定错过了一个步骤 因为我无法获取颜色 php 页面来控制 svg div clas
  • 如何从 Golang 的 Slice 中删除元素

    fmt Println Enter position to delete fmt Scanln pos new arr make int len arr 1 k 0 for i 0 i lt len arr 1 if i pos new a
  • 如何获取DNS中的TTL(Time To Live)?

    我想监控 DNS 地址 我需要得到TTL 生存时间 告诉我 DNS 记录何时到期 C 中如何获取TTL Net 示例代码位于C NET DNS 查询组件 http www codeproject com Articles 12072 C N
  • 在 Unix 中删除 ANSI 颜色转义的最佳方法

    我有一个 perl 程序 它用颜色打印输出 如果我重定向文件中的输出并在 vi 中打开它 我会看到颜色特殊字符 像这样的东西 31 43mAnd this is red on yellow too 0m 从输出文件中删除此颜色字符的最佳方法
  • Controller类中session和params的区别

    我正在查看购物车的 Rails 示例 在 ApplicationController 类中我看到如下代码 class ApplicationController lt ActionController Base protect from f
  • 如何对整列使用indexOf?

    我正在创建一个带有下拉列表的列 A 列 该列表取决于同一行 G 列中的相邻值 下拉列表的内容位于另一个工作表 OE 名称 中 在其中对它们进行索引以选择值的正确列表 仅包含相关脚本和列的工作表示例如下 https docs google c
  • 字符串中的零填充数字

    我需要将单个数字 1 到 9 转换为 01 到 09 我可以想到一个办法 但它又大又丑又麻烦 我确信一定有一些简洁的方法 有什么建议 首先 你的描述有误导性 Double是浮点数据类型 您可能想在字符串中用前导零填充数字 以下代码执行此操作
  • HTTP 在 Android 模拟器中不起作用

    我尝试了多个 HTTP 类 HttpURLConnection HTTPClient和其他 但它们在模拟器中不起作用 然后我决定在我的手机上测试一下 效果很好 那么我该如何解决 Android 模拟器 HTTP 类不起作用 而浏览器可以工作
  • 为什么来自 POSTMAN 的 POST 请求返回空?

    我在邮递员中的标题如下 我的身体是这样的 在 Laravel Lumen 路线中 我像这样检查 router gt group middleware gt auth function router router gt post sales
  • 无效的设备符号 cudaMemcpyFromSymbol CUDA

    我想计算 CUDA 中数组所有元素的总和 我想出了这段代码 它编译没有任何错误 但结果始终为零 我收到了无效的设备符号cudaMemcpyFromSymbol 我无法使用 Thrust 或 Cublas 等任何库 define TRIALS
  • 在 Swing 中使用 sleep()

    public class TestFrame extends JFrame public TestFrame setBounds 10 10 500 500 setLocationRelativeTo null setDefaultClos
  • 将 Spark 作业从 Airflow 提交到外部 Spark 容器

    我有一个用 docker swarm 构建的 Spark 和气流集群 正如我所期望的 气流容器不能包含火花提交 我正在使用 github 中存在的以下图像 Spark 大数据欧洲 docker hadoop spark workbench
  • 确定有序素数对 (p, q) 的数量,使得 N = p^2+q^3 使得从 0 到 9 的每个数字都恰好出现一次

    我必须编写一个程序 可以确定素数 p q 的有序对的数量 这样当 N p 2 q 3 以十进制书写时 从 0 到 9 的每个数字只出现一次 没有前导零 我想到使用埃拉托斯特尼筛的变体 正如它所解释的那样here https www geek
  • RETEasy 客户端 + NoSuchMethodError

    我正在尝试编写简单的 RESTEasy 客户端 下面给出的是示例代码 Client client ClientBuilder newBuilder build WebTarget target client target http loca