maven ApiSelectorBuilder类型中的方法apis(java.util.function.Predicate< springfox.documentation.RequestHandler>)不适用

s71maibg  于 5个月前  发布在  Maven
关注(0)|答案(7)|浏览(85)

@Bean .API方法给了我下面的错误。我已经像往常一样用@ Bean添加了Swagger配置类。

The method apis(java.util.function.Predicate<springfox.documentation.RequestHandler>) in the type ApiSelectorBuilder is not applicable for the arguments (com.google.common.base.Predicate<springfox.documentation.RequestHandler>)

字符串
我的配置类如下:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SpringFoxConfig extends WebMvcConfigurationSupport {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage(                                            
                    "package com.sample.controller;"))
                .paths(PathSelectors.any())
                .build();
                                                
    }
}

fbcarpbf

fbcarpbf1#

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

字符串
我尝试了这些依赖项,错误确实消失了。

kzipqqlq

kzipqqlq2#

删除以下依赖项:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

字符串
使用以下内容:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>

yb3bgrhw

yb3bgrhw3#

如果同时添加“springfox-boot-starter”和“springfox-swagger-ui”依赖项,并且它们的版本不同,则会发生此错误。
请注意,如果您正在添加“springfox-boot-starter”,则不需要添加显式的“springfox-swagger-ui”依赖项。
所以只要添加下面的并删除任何“springfox-swagger-ui”依赖项。

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
</dependency>

字符串

ve7v8dk2

ve7v8dk24#

对于那些已经拥有正确依赖关系的人:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

字符串
如果您还没有@EnabledWebMvc,则可能需要添加它。
Springfox文档:


的数据

kfgdxczn

kfgdxczn5#

删除package;插件,为.apis()定义basePackage

RequestHandlerSelectors.basePackage("com.sample.controller")

字符串
而且你的基本包好像是com.sample,那就用那个吧。
完整代码:

@Configuration
@EnableSwagger2
public class SpringFoxConfig extends WebMvcConfigurationSupport {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sample.controller"))
                .paths(PathSelectors.any())
                .build();
                                                
    }
}


使用依赖项

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

hs1ihplo

hs1ihplo6#

检查外部库中所有io.springfox:springfox-* jar的版本。肯定有多个版本混淆了。如果你使用的是springfox-boot-started:3.0.0,那么通过exclusion排除其他版本。你不需要任何其他springfox依赖项。下面为我修复了这个问题-

<groupId>com.abc.xyz</groupId>
      <artifactId>alpha-beta-api</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger2</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-swagger-ui</artifactId>
        </exclusion>
        <exclusion>
          <groupId>io.springfox</groupId>
          <artifactId>springfox-spring-web</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

字符串

fivyi3re

fivyi3re7#

在我的例子中,这个错误是因为我的spring fox依赖的版本不同而发生的。修复版本帮助我解决了这个错误。下面的依赖对我来说很好。

<dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>3.0.0</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>3.0.0</version>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>

字符串

相关问题