You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java集成DocuSign报CommonConfig构造方法不存在NoSuchMethodError排查

问题场景

基于Eclipse开发Java Web应用,接入DocuSign嵌入式电子签名功能时抛出运行时异常,多次切换Jersey依赖版本仍无法解决问题。

异常堆栈

java.lang.NoSuchMethodError: 'void org.glassfish.jersey.model.internal.CommonConfig.<init> 
(javax.ws.rs.RuntimeType, java.util.function.Predicate)'
org.glassfish.jersey.client.ClientConfig$State.<init>(ClientConfig.java:140)
org.glassfish.jersey.client.ClientConfig.<init>(ClientConfig.java:496)
com.docusign.esign.client.ApiClient.buildHttpClient(ApiClient.java:1753)
com.docusign.esign.client.ApiClient.<init>(ApiClient.java:77)
com.docusign.esign.client.Configuration.<clinit>(Configuration.java:5)
com.docusign.esign.api.EnvelopesApi.<init>(EnvelopesApi.java:16)
com.uniquedeveloper.registration.test2.EmbeddedSigningTest(test2.java:141)
com.uniquedeveloper.registration.test2.doPost(test2.java:64)
javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

当前pom.xml片段

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Trial1</groupId>
  <artifactId>Trial1</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <release>15</release>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.3</version>
      </plugin>
    </plugins>
  </build>
   <properties>
        <java.version>11</java.version>
        <oauth2.version>2.5.6</oauth2.version>
        <commonsio.version>2.11.0</commonsio.version>
        <docusign.version>3.18.0</docusign.version>
        <rooms.version>1.1.0</rooms.version>
        <click.version>1.0.0</click.version>
        <monitor.version>1.1.0</monitor.version>
        <admin.version>1.0.0-BETA</admin.version>
    </properties>
<dependencies>
 <dependency>
异常根因

该报错是典型的Jersey依赖版本冲突、运行时加载了低版本不兼容类导致的:

  • 报错中缺失的CommonConfig.<init>(javax.ws.rs.RuntimeType, java.util.function.Predicate)构造方法,是Jersey 2.29及以上版本才新增的方法签名,低版本Jersey的CommonConfig类不存在该构造方法。
  • 你使用的DocuSign eSignature Java SDK 3.18.0版本默认依赖Jersey 2.35版本,出现该问题说明运行时实际加载的Jersey common包版本低于2.29,冲突来源通常有两个:
    • 手动引入的Jersey版本过低,或其他第三方依赖传递引入了低版本Jersey,覆盖了DocuSign SDK需要的高版本
    • 部署用的Tomcat容器lib目录下自带了旧版本Jersey/JAX-RS实现包,类加载时优先加载了容器内的旧版本类,覆盖了war包内的正确版本
  • 额外配置问题:pom中maven-compiler-plugin配置的编译版本为Java 15,但properties中声明的java.version为11,版本不一致可能放大类兼容性问题,但不是本次报错的核心诱因。
解决方案

按以下步骤逐一排查修复:

  • 统一Jersey依赖版本:移除所有手动单独引入的Jersey相关依赖,在pom.xml中显式声明所有Jersey相关包的版本为2.35(和DocuSign 3.18.0依赖版本完全对齐),避免版本不一致:
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <version>2.35</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.35</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.35</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.35</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.35</version>
</dependency>
  • 排查容器依赖冲突:打开Tomcat安装目录下的lib文件夹,检查是否存在版本低于2.29的Jersey相关jar包、版本低于2.1的javax.ws.rs-api包。如果存在这类冲突包,要么直接删除容器lib下的冲突包,要么在maven-war-plugin中配置打包排除规则,避免war包内的依赖和容器自带包重复冲突:
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.3</version>
    <configuration>
        <packagingExcludes>WEB-INF/lib/javax.ws.rs-api-*.jar,WEB-INF/lib/jersey-*.jar</packagingExcludes>
    </configuration>
</plugin>

如果是在Eclipse中关联Tomcat运行项目,修复后需要清理Tomcat工作目录、完全重新发布项目,避免旧缓存类残留。

  • 统一JDK编译版本:将maven-compiler-plugin的release配置值和properties中的java.version值保持一致,避免编译版本和运行环境不匹配。
  • 校验依赖树:在Eclipse中打开pom.xml的Dependency Hierarchy面板,搜索jersey-common,确认所有路径引入的jersey-common版本均为2.35,如果存在其他依赖传递引入的低版本包,直接在对应依赖下添加exclusion规则排除即可。

内容的提问来源于stack exchange,提问作者Salma Louhaichy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:36:16