Java Spring boot (Swagger) Type javax.servlet.http.HttpServletRequest not present

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    public Docket api(){
        return  new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(
                        new ApiInfoBuilder()
                                .description("Gestion de stock API documentation")
                                .title("Gestion de stock REST API")
                                .build()
                )
                .groupName("REST API V1")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.mboumda.gestionstock"))
                .paths(PathSelectors.ant(APP_ROOT + "/**"))
                .build();
    }
}

ci dessus mon code de configuration swagger mais après exécution je recois comme message d’erreur ce qui suit :

ava.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present
at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) ~[na:na]
at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125) ~[na:na]
at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) ~[na:na]
at java.base/sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68) ~[na:na]
at java.base/sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138) ~[na:na]
at java.base/sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49) ~[na:na]
at java.base/sun.reflect.generics.repository.ClassRepository.computeSuperInterfaces(ClassRepository.java:117) ~[na:na]
at java.base/sun.reflect.generics.repository.ClassRepository.getSuperInterfaces(ClassRepository.java:95) ~[na:na]

comment résoudre cela.?

Swagger ne supporte pas la version 3.0 de Spring Boot. Utilisez plutôt OpenAPI qui est la version mise à jour de Swagger.

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.2.0</version>
</dependency>

Il suffit d’ajouter cette dépendance dans le pom.xml

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>

si nécessaire, ajoutez également cette propriété dans votre application.properties

spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

J’ai eu exactement la même erreur et cela a fonctionné pour moi en utilisant l’OpenApi :

pom.xml:

    <!-- Swagger -->
    <dependency>
        <groupId>org.springdoc</groupId>
        <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>8.0.0.Final</version>
    </dependency>
    <!-- Swagger END -->

WebSecurityConfig.java (ajoutez cette ligne si vous utilisez la sécurité Springboot) :

.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()

J’ai ensuite accédé au lien suivant : http://localhost:8080/swagger-ui/index.html

Je n’ai pas eu besoin d’ajouter d’autres configurations.