在Spring MVC上使用Cofiger挥舞后无法在JBoss上部署War文件

问题描述

我正在部署在jboss应用服务器上的spring mvc项目。我正在努力对该项目进行配置。在配置大张旗鼓之前,它已部署在jboss服务器上。但是在配置swagger部署后,通过指示以下错误失败

WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./api" => "java.lang.RuntimeException: java.lang.IllegalStateException: Cannot load configuration class: com.ech.api.configuration.SpringFoxConfig
    Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Cannot load configuration class: com.ech.api.configuration.SpringFoxConfig
    Caused by: java.lang.IllegalStateException: Cannot load configuration class: com.ech.api.configuration.SpringFoxConfig
    Caused by: java.lang.NoClassDefFoundError: springfox/documentation/spring/web/plugins/Docket
    Caused by: java.lang.classNotFoundException: springfox.documentation.spring.web.plugins.Docket from [Module \"deployment.api.war\" from Service Module Loader]"},"WFLYCTL0288: One or more services were unable to start due to one or more indirect dependencies not being available." => {
    "Services that were unable to start:" => ["jboss.deployment.unit.\"api.war\".deploymentCompleteService"],"Services that may be the cause:" => [
      "jboss.iiop-openjdk.poa-service.rootpoa","jboss.txn.service.remote","jboss.xts.handlers","org.wildfly.clustering.cache.default-service-provider-registry.ejb","org.wildfly.clustering.cache.default-service-provider-registry.web","org.wildfly.clustering.cache.group.ejb.passivation","org.wildfly.clustering.cache.group.hibernate.entity","org.wildfly.clustering.cache.group.hibernate.local-query","org.wildfly.clustering.cache.group.hibernate.timestamps","org.wildfly.clustering.cache.group.server.client-mappings","org.wildfly.clustering.cache.group.server.default","org.wildfly.clustering.cache.group.web.client-mappings","org.wildfly.clustering.cache.group.web.passivation","org.wildfly.clustering.cache.registry.ejb.passivation","org.wildfly.clustering.cache.registry.server.default","org.wildfly.clustering.cache.registry.web.passivation","org.wildfly.clustering.cache.registry-entry.ejb.passivation","org.wildfly.clustering.cache.registry-entry.hibernate.entity","org.wildfly.clustering.cache.registry-entry.hibernate.local-query","org.wildfly.clustering.cache.registry-entry.hibernate.timestamps","org.wildfly.clustering.cache.registry-entry.server.client-mappings","org.wildfly.clustering.cache.registry-entry.server.default","org.wildfly.clustering.cache.registry-entry.web.client-mappings","org.wildfly.clustering.cache.registry-entry.web.passivation","org.wildfly.clustering.cache.registry-factory.ejb.passivation","org.wildfly.clustering.cache.registry-factory.hibernate.entity","org.wildfly.clustering.cache.registry-factory.hibernate.local-query","org.wildfly.clustering.cache.registry-factory.hibernate.timestamps","org.wildfly.clustering.cache.registry-factory.server.client-mappings","org.wildfly.clustering.cache.registry-factory.server.default","org.wildfly.clustering.cache.registry-factory.web.client-mappings","org.wildfly.clustering.cache.registry-factory.web.passivation","org.wildfly.clustering.cache.service-provider-registry.ejb.client-mappings","org.wildfly.clustering.cache.service-provider-registry.ejb.passivation","org.wildfly.clustering.cache.service-provider-registry.hibernate.entity","org.wildfly.clustering.cache.service-provider-registry.hibernate.local-query","org.wildfly.clustering.cache.service-provider-registry.hibernate.timestamps","org.wildfly.clustering.cache.service-provider-registry.server.client-mappings","org.wildfly.clustering.cache.service-provider-registry.server.default","org.wildfly.clustering.cache.service-provider-registry.web.client-mappings","org.wildfly.clustering.cache.service-provider-registry.web.default-server","org.wildfly.clustering.cache.service-provider-registry.web.passivation","org.wildfly.clustering.command-dispatcher-factory.ejb","org.wildfly.clustering.command-dispatcher-factory.hibernate","org.wildfly.clustering.command-dispatcher-factory.server","org.wildfly.clustering.group.hibernate","org.wildfly.clustering.group.server","org.wildfly.clustering.infinispan.cache.ejb.passivation","org.wildfly.clustering.infinispan.cache.hibernate.entity","org.wildfly.clustering.infinispan.cache.hibernate.local-query","org.wildfly.clustering.infinispan.cache.hibernate.timestamps","org.wildfly.clustering.infinispan.cache.server.client-mappings","org.wildfly.clustering.infinispan.cache.server.default","org.wildfly.clustering.infinispan.cache.store.hibernate.entity","org.wildfly.clustering.infinispan.cache.store.hibernate.local-query","org.wildfly.clustering.infinispan.cache.store.hibernate.timestamps","org.wildfly.clustering.infinispan.cache.store.server.default","org.wildfly.clustering.infinispan.cache.web.client-mappings","org.wildfly.clustering.infinispan.cache.web.passivation","org.wildfly.clustering.infinispan.cache-configuration.hibernate.entity","org.wildfly.clustering.infinispan.cache-configuration.hibernate.entity.expiration","org.wildfly.clustering.infinispan.cache-configuration.hibernate.entity.locking","org.wildfly.clustering.infinispan.cache-configuration.hibernate.entity.memory","org.wildfly.clustering.infinispan.cache-configuration.hibernate.entity.transaction","org.wildfly.clustering.infinispan.cache-configuration.hibernate.local-query","org.wildfly.clustering.infinispan.cache-configuration.hibernate.local-query.expiration","org.wildfly.clustering.infinispan.cache-configuration.hibernate.local-query.locking","org.wildfly.clustering.infinispan.cache-configuration.hibernate.local-query.memory","org.wildfly.clustering.infinispan.cache-configuration.hibernate.local-query.transaction","org.wildfly.clustering.infinispan.cache-configuration.hibernate.timestamps","org.wildfly.clustering.infinispan.cache-configuration.hibernate.timestamps.expiration","org.wildfly.clustering.infinispan.cache-configuration.hibernate.timestamps.locking","org.wildfly.clustering.infinispan.cache-configuration.hibernate.timestamps.memory","org.wildfly.clustering.infinispan.cache-configuration.hibernate.timestamps.transaction","org.wildfly.clustering.infinispan.cache-configuration.server.client-mappings","org.wildfly.clustering.infinispan.cache-configuration.server.default","org.wildfly.clustering.infinispan.cache-configuration.server.default.expiration","org.wildfly.clustering.infinispan.cache-configuration.server.default.locking","org.wildfly.clustering.infinispan.cache-configuration.server.default.memory","org.wildfly.clustering.infinispan.cache-configuration.server.default.transaction","org.wildfly.clustering.infinispan.cache-configuration.web.client-mappings","org.wildfly.clustering.infinispan.cache-container.hibernate","org.wildfly.clustering.infinispan.cache-container.server","org.wildfly.clustering.infinispan.cache-container-configuration.hibernate","org.wildfly.clustering.infinispan.cache-container-configuration.hibernate.transport","org.wildfly.clustering.infinispan.cache-container-configuration.server","org.wildfly.clustering.infinispan.cache-container-configuration.server.transport","org.wildfly.clustering.infinispan.default-cache.ejb","org.wildfly.clustering.infinispan.default-cache.web","org.wildfly.clustering.infinispan.default-cache-configuration.server"
    ]
  }
}

我的swagerConfigfile如下

@EnableWebMvc
public class SwaggerConfig extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/meta-inf/resources/");

        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/meta-inf/resources/webjars/");
    }
}

Springfox配置文件如下

@Configuration
@EnableSwagger2
public class SpringFoxConfig {
    private static final ApiInfo DEFAULT_API_INFO = null; //Swagger info

    @Bean
    public Docket api()
    {
        return new Docket(DocumentationType.SWAGGER_2)
                .forCodeGeneration(Boolean.TRUE)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ech.api.controller"))
                .paths(PathSelectors.any())
                .build();

    }


}

我在pom中添加了以下依赖项

<dependencies>
     <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>
</dependencies>

春季版本3.2.10.RELEASE

解决方法

尝试在 swagger版本2.7.0

中使用此配置
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {
    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()                 .apis(RequestHandlerSelectors.basePackage("com.ech.api.controller"))
                .paths(PathSelectors.any())
                .build();
             
    }
  @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}