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

JBoss7迁移Wildfly10遇Resteasy NoSuchMethodError问题求助

JBoss 7.1.1 → Wildfly 10迁移:Resteasy NoSuchMethodError问题解决方案

问题回顾

你在将业务应用从JBoss 7.1.1 Final迁移至Wildfly 10时遇到部署失败,核心错误是java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector;,完整堆栈跟踪如下:

247341 [ServerService Thread Pool -- 5] ERROR org.jboss.msc.service.fail - MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./starnet org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./starnet: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in "/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) at org.jboss.threads.JBossThread.run(JBossThread.java:320) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in "/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442) at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127) at javax.servlet.GenericServlet.init(GenericServlet.java:244) at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117) at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78) at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103) at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:250) at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:133) at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:546) at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:517) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:559) at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101) at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) ... 6 more Caused by: java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; at org.jboss.resteasy.plugins.spring.SpringBeanProcessor$ResteasyBeanPostProcessor.getInjector(SpringBeanProcessor.java:133) at org.jboss.resteasy.plugins.spring.SpringBeanProcessor$ResteasyBeanPostProcessor.postProcessAfterInitialization(SpringBeanProcessor.java:125) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) ... 37 more 247349 [management-handler-thread - 2] ERROR org.jboss.as.server - WFLYSRV0021: Deploy of deployment "starnet-web-6.0.4-SNAPSHOT.war" was rolled back with the following failure message: { "WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./starnet" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./starnet: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in \"/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class\": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in \"/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class\": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; Caused by: java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector;"}, "WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./starnet"], "WFLYCTL0180: Services with missing/unavailable dependencies" => undefined } [2018-01-17 03:20:41,313] Artifact starnet-web:war exploded: Error during artifact deployment. See server log for details. [2018-01-17 03:20:41,314] Artifact starnet-web:war exploded: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./starnet" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./starnet: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in \"/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class\": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JSONReferentielGeolocBenefRessource' defined in \"/D:/CloudStation/Slim/CloudStation/004_Developpement/star/Workspace/starnet-bom/starnet-web/target/starnet-web-6.0.4-SNAPSHOT/WEB-INF/classes/net/star/starnet/web/rest/auth/ressources/json/JSONReferentielGeolocBenefRessource.class\": Initialization of bean failed; nested exception is java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector; Caused by: java.lang.NoSuchMethodError: org.jboss.resteasy.spi.InjectorFactory.createPropertyInjector(Ljava/lang/Class;)Lorg/jboss/resteasy/spi/PropertyInjector;"},"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./starnet"],"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined}

你已经尝试了匹配Resteasy版本和调整jboss-deployment-structure.xml,但问题依旧。下面我来拆解这个问题的根源和可行的解决步骤:

问题根源

这个错误本质是Resteasy版本不兼容导致的类冲突:

  • Wildfly 10内置的Resteasy版本是3.0.19.Final,而JBoss 7.1.1使用的是Resteasy 2.x系列
  • 你的应用中可能残留了旧版本的Resteasy类(比如打包在WAR的WEB-INF/lib中),或者Spring集成的Resteasy组件版本与Wildfly内置版本不匹配,导致类加载时调用了不存在的方法

具体解决步骤

1. 统一所有Resteasy依赖的版本并设为Provided

打开你的pom.xml,检查所有Resteasy相关的依赖(包括resteasy-spring、resteasy-jaxb-provider等),确保它们的版本都是3.0.19.Final,并且scope设置为provided,这样这些依赖不会被打包到WAR中,而是直接使用Wildfly内置的版本:

<!-- 核心Resteasy依赖 -->
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>3.0.19.Final</version>
    <scope>provided</scope>
</dependency>
<!-- Resteasy与Spring集成的依赖(如果用到) -->
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-spring</artifactId>
    <version>3.0.19.Final</version>
    <scope>provided</scope>
</dependency>

2. 调整jboss-deployment-structure.xml,隔离冲突模块

当前的配置没有针对Resteasy做模块隔离,需要修改配置,强制应用使用Wildfly内置的Resteasy模块,排除应用中可能自带的冲突类:

<jboss-deployment-structure>
    <deployment>
        <!-- 排除应用中可能包含的Resteasy类,避免与内置版本冲突 -->
        <exclusions>
            <module name="org.jboss.resteasy.resteasy-jaxrs" />
            <module name="org.jboss.resteasy.resteasy-spring" />
        </exclusions>
        <!-- 明确依赖Wildfly内置的Resteasy模块 -->
        <dependencies>
            <module name="org.jboss.resteasy.resteasy-jaxrs" export="true" />
            <module name="org.jboss.resteasy.resteasy-spring" export="true" />
            <module name="javax.xml.ws.api" export="true" />
            <module name="javax.jws.api" export="true" />
        </dependencies>
    </deployment>
</jboss-deployment-structure>

3. 检查并清理Spring配置中的手动Resteasy Bean

如果你的Spring配置文件中手动注册了Resteasy相关的Bean(比如SpringBeanProcessor),请移除这些手动配置。Wildfly的Resteasy模块已经内置了与Spring的集成逻辑,手动配置很容易导致版本不匹配。

4. 彻底清理构建缓存和Wildfly缓存

  • 执行mvn clean install,彻底清理Maven构建目录,确保没有旧的依赖包残留
  • 删除Wildfly安装目录下的standalone/tmp和standalone/data文件夹,清除服务器缓存的旧类文件

5. 验证类加载来源(可选)

如果还是有问题,可以开启Wildfly的类加载日志,确认org.jboss.resteasy.spi.InjectorFactory是从Wildfly的模块加载,而不是应用的WEB-INF/lib:

在standalone/configuration/standalone.xml中添加日志配置:

<subsystem xmlns="urn:jboss:domain:logging:3.0">
    <logger category="org.jboss.as.server.deployment">
        <level name="TRACE"/>
    </logger>
</subsystem>

启动服务器后,查看日志中关于该类的加载路径,确认是来自modules/system/layers/base/org/jboss/resteasy/resteasy-jaxrs/main目录下的Jar包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:48:33