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

运行含指定依赖的Jar时遇RESTEASY003215异常求助

解决RESTEASY003215:无法找到application/x-www-form-urlencoded对应的Writer异常

错误信息

错误:IsvProvisioningManager在createRealm方法中出现异常RESTEASY004655:无法调用请求:javax.ws.rs.ProcessingException: RESTEASY003215: 无法找到content-type为application/x-www-form-urlencoded、类型为javax.ws.rs.core.Form$1的writer

主线程"main"中抛出异常:javax.ws.rs.ProcessingException: RESTEASY004655: 无法调用请求:javax.ws.rs.ProcessingException: RESTEASY003215: 无法找到content-type为application/x-www-form-urlencoded、类型为javax.ws.rs.core.Form$1的writer
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:341)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:464)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at jdk.proxy2/jdk.proxy2.$Proxy32.grantToken(Unknown Source)
at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:98)
at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:74)
at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:69)
at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest(ClientInvocation.java:660)
at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:461)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:152)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:115)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at jdk.proxy2/jdk.proxy2.$Proxy41.create(Unknown Source)
at com.sfnt.ems.service.keycloak.provisioning.IsvProvisioningManager.createRole(IsvProvisioningManager.java:596)
at com.sfnt.ems.service.keycloak.provisioning.IsvProvisioningManager.createRoles(IsvProvisioningManager.java:527)
at com.sfnt.ems.service.keycloak.provisioning.IsvProvisioningManager.createRealm(IsvProvisioningManager.java:70)

依赖配置

运行的Jar包含以下Gradle依赖:

dependencies {
    implementation('org.keycloak:keycloak-admin-client:18.0.0'){
        exclude group: 'org.jboss.resteasy', module: 'resteasy-client'
    }
    implementation group: 'com.sun.xml.fastinfoset', name: 'FastInfoset', version: '1.2.15'
    implementation group: 'com.sun.mail', name: 'imap', version: '1.6.2'
    implementation group: 'org.keycloak', name: 'keycloak-events-api', version: '1.8.1.Final'
    implementation group: 'org.keycloak', name: 'keycloak-model-api', version: '1.8.1.Final'
    compileOnly('org.keycloak:keycloak-services:18.0.0'){
        exclude group: 'org.keycloak', module: 'keycloak-core'
        exclude group: 'org.keycloak', module: 'keycloak-common'
        exclude group: 'org.jboss.spec.javax.ws.rs', module: 'jboss-jaxrs-api_2.1_spec'
        exclude group: 'org.jboss.logging', module: 'jboss-logging'
        exclude group:'com.openshift', module: 'openshift-restclient-java'
        exclude group:'org.yaml', module:'snakeyaml'
    }
    implementation ('com.sntl:sm-cloud-env-client:2.0.2'){
        exclude group: 'commons-httpclient', module: 'commons-httpclient'
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
        //exclude group: 'org.springframework.vault', module: 'spring-vault-core'
    }
    //implementation group: 'org.springframework.vault', name: 'spring-vault-core', version: '2.3.2'
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'

    // Use JUnit Jupiter for testing.
    testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation group: 'com.google.guava', name: 'guava', version: '31.1-jre'
}

解决方案

这个异常的核心原因是缺少处理application/x-www-form-urlencoded类型请求的Resteasy Provider,Keycloak Admin Client在获取Token时会发送这类请求,而你排除了resteasy-client依赖,导致相关的Form处理组件缺失。

方式1:移除对resteasy-client的排除

修改keycloak-admin-client的依赖配置,去掉排除规则:

implementation('org.keycloak:keycloak-admin-client:18.0.0')
// 移除原来的exclude语句

这样会自动引入Keycloak Admin Client依赖的resteasy-client及相关组件,包含处理Form请求的resteasy-form-provider。

方式2:手动添加缺失的Provider依赖

如果必须排除resteasy-client,则手动添加处理Form的Provider:

implementation 'org.jboss.resteasy:resteasy-form-provider:4.7.6.Final'

注意版本要和Keycloak 18.0.0兼容的Resteasy版本(Keycloak 18使用Resteasy 4.7.6.Final)。

另外,可通过gradle dependencies命令查看依赖树,排查是否存在不同版本的Resteasy组件冲突,确保依赖版本统一。


内容的提问来源于stack exchange,提问作者RICHA SHARMA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:47:34