38 votes

Impossible d'accéder à javax.servlet.Filter; fichier de classe javax.servlet.Filter introuvable

Je cherche à mettre en œuvre OAuth2 AuthorizationServer tel que décrit dans cet article mais je continue à obtenir l'erreur ci-dessous. Pour une configuration de sécurité spring :

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
@Order(1)
class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${user.oauth.user.username}")
    private String username;
    @Value("${user.oauth.user.password}")
    private String password;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requestMatchers()
                .antMatchers("/login", "/oauth/authorize")
                .and()
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .formLogin().permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser(username)
                .password(passwordEncoder().encode(password))
                .roles("USER");
    }

    @Bean
    public BCryptPasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

Je continue à obtenir cette erreur :

[ERROR] Échec de l'exécution de la goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) sur le projet auth-service : Erreur de compilation
[ERROR] /home/mcs/auth-service/src/main/java/com/example/authservice/config/SecurityConfig.java:[14,1] l'accès à javax.servlet.Filter est impossible
[ERROR] fichier classe pour javax.servlet.Filter introuvable

Que signifie cette erreur et qu'est-ce qui semble être incorrect ?

Mon pom.xml généré à partir de start.spring.io en utilisant la dernière version M2 de Spring Boot :

    4.0.0

        org.springframework.boot
        spring-boot-starter-parent
        2.2.0.M2

    com.example
    auth-service
    0.0.1-SNAPSHOT
    auth-service
    Service d'autorisation

        11

            org.springframework.boot
            spring-boot-starter-security

            com.okta.spring
            okta-spring-boot-starter
            1.1.0

            org.springframework.security.oauth
            spring-security-oauth2
            2.3.5.RELEASE

            org.projectlombok
            lombok
            2.6.7

            org.springframework.boot
            spring-boot-starter-test
            test

            org.springframework.security
            spring-security-test
            test

                org.springframework.boot
                spring-boot-maven-plugin

            spring-snapshots
            Instantanés Spring
            https://repo.spring.io/snapshot

                true

            spring-milestones
            Étapes Spring
            https://repo.spring.io/milestone

            spring-snapshots
            Instantanés Spring
            https://repo.spring.io/snapshot

                true

            spring-milestones
            Étapes Spring
            https://repo.spring.io/milestone

92voto

Sachin Points 44

L'article que vous avez partagé vous demande d'ajouter une dépendance web que je ne vois pas dans votre fichier pom.xml. Ajoutez la dépendance ci-dessous qui devrait résoudre l'erreur javax.servlet

    org.springframework.boot
    spring-boot-starter-web

Si vous vérifiez dans le fichier pom de spring-boot-starter-web, vous verrez une dépendance à javax.servlet-api - 3.1.0.

1 votes

ici est ce fichier pom - il ne contient pas de dépendance javax.servlet-api.

4voto

adam_j_knight Points 61

Regardez la version de l'API servlet dont dépend Spring puis dans Gradle incluez :

    compileOnly("javax.servlet:javax.servlet-api:X")

Où X est la version de servlet-api dont dépend spring.

4voto

Shivam Pandey Points 2709

J'ai rencontré le même problème mais je l'ai résolu en ajoutant la dépendance spring-boot-starter-web

    org.springframework.boot
    spring-boot-starter-web
    2.4.2

1 votes

Veuillez traduire ceci en anglais : cela a corrigé ce drôle de message d'erreur pour moi

3voto

Mehmet Pekdemir Points 64

Le message d'erreur que vous voyez (impossible d'accéder à javax.servlet.Filter) suggère qu'il y a un problème avec le classpath et que l'API Servlet est manquante.

    javax.servlet
    javax.servlet-api
    4.0.1
    fourni

Une fois que vous avez ajouté l'API Servlet à votre classpath, vous devriez pouvoir compiler votre code avec succès.

0voto

Akshay Points 443

Vérifiez votre arborescence de dépendances. Contient-elle javax servlet api? Sinon, choisissez une version pertinente à partir d'ici https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api et ajoutez-la à votre pom.xml

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X