Kan ikke finde Spring NamespaceHandler til XML Schema Namespace
Jeg annoncerede netop det nye Learn Spring Security-kursus, inklusive det fulde materiale med fokus på den nye OAuth2-stak i Spring Security 5:
>> KONTROLLER KURSEN1. Problemet
Denne artikel vil diskutere et af de mest almindelige konfigurationsproblemer i foråret - en navnehåndterer for et af forårets navneområder blev ikke fundet. Det meste af tiden betyder det, at en bestemt Spring jar mangler fra klassestien - så lad os gå over, hvad disse manglende skemaer kan være, og hvad den manglende afhængighed er for hver enkelt.
2. //www.springframework.org/schema/security
Sikkerhedsnavnet, der ikke er tilgængeligt, er langt det mest almindelige problem i praksis:
Hvilket fører til følgende undtagelse:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurationsproblem: Kan ikke finde Spring NamespaceHandler til XML-skemaens navneområde [//www.springframework.org/schema/security] Stødende ressource: klasse stieressource [securityConfig.xml]
Løsningen er ligetil - den spring-security-config afhængighed mangler fra projektets klassesti:
org.springframework.security spring-security-config 3.2.5.RELEASE
Dette vil placere den korrekte navnehåndterer - i dette tilfælde SikkerhedNamespaceHandler - på klassestien og klar til at analysere elementerne i sikkerhed navneområde.
Den komplette Maven-konfiguration til en fuld Spring Security-opsætning kan findes i min tidligere Maven-tutorial.
3. //www.springframework.org/schema/aop
Det samme problem opstår, når du bruger det aop navneområde uden at have det nødvendige aop-forårsbibliotek på klassestien:
Den nøjagtige undtagelse:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurationsproblem: Kan ikke finde Spring NamespaceHandler til XML-skemaens navneområde [//www.springframework.org/schema/aop] Stødende ressource: ServletContext-ressource [/ WEB-INF / webConfig. xml]
Løsningen er ens - den spring-aop jar skal tilføjes til klassestien til projektet:
org.springframework spring-aop 4.1.0.RELEASE
I dette tilfælde er AopNamespaceHandler vil være til stede på klassestien efter tilføjelse af den nye afhængighed.
4. //www.springframework.org/schema/tx
Ved brug af transaktionens navneområde - et lille, men meget nyttigt navneområde til konfiguration af transaktionssemantikken:
vil også resultere i en undtagelse, hvis den rigtige krukke ikke er på klassestien:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurationsproblem: Kan ikke finde Spring NamespaceHandler til XML-skema navneområde [//www.springframework.org/schema/tx] Stødende ressource: ressource for klassesti [daoConfig.xml]
Den manglende afhængighed her er fjeder-tx:
org.springframework spring-tx 4.1.0.RELEASE
Nu, det rigtige NamspaceHandler - nemlig TxNamespaceHandler - vil være til stede på klassestien, der tillader den deklarative transaktionsstyring med både XML og annoteringer.
5. //www.springframework.org/schema/mvc
Gå videre til det mvc navneområde:
Den manglende afhængighed vil føre til følgende undtagelse:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurationsproblem: Kan ikke finde Spring NamespaceHandler til XML-skema navneområde [//www.springframework.org/schema/mvc] Stødende ressource: klasse stieressource [webConfig.xml]
I dette tilfælde er den manglende afhængighed fjeder-mvc:
org.springframework spring-webmvc 4.1.0.RELEASE
Tilføjelse af dette til pom.xml vil tilføje MvcNamespaceHandler til klassestien - så projektet kan konfigurere MVC-semantik ved hjælp af navneområdet.
6. Konklusion
Endelig, hvis du bruger Eclipse til at styre webserveren og implementere - sørg for, at afsnittet Implementeringssamling i projektet er korrekt konfigureret - nemlig at Maven-afhængigheder faktisk er inkluderet på klassestien ved implementeringstidspunktet.
Denne vejledning diskuterede de sædvanlige mistænkte for problemet "Ikke i stand til at finde Spring NamespaceHandler til XML-skema-navneområde" og leverede løsninger til hver begivenhed.
Sikkerhedsbund