Kan ikke finne Spring NamespaceHandler for XML Schema Namespace

Sikkerhetstopp

Jeg kunngjorde nettopp det nye Learn Spring Security-kurset, inkludert hele materialet med fokus på den nye OAuth2-stakken i Spring Security 5:

>> KONTROLLER KURSET

1. Problemet

Denne artikkelen vil diskutere et av de vanligste konfigurasjonsproblemene våren - en navneområdebehandler for et av vårens navneområder ble ikke funnet. Det meste av tiden betyr dette at en bestemt Spring jar mangler fra klassestien - så la oss gå gjennom hva disse manglende skjemaene kan være, og hva den manglende avhengigheten er for hver enkelt.

2. //www.springframework.org/schema/security

Sikkerhetsnavnet som ikke er tilgjengelig, er uten tvil det mest problematiske problemet i praksis:

Som fører til følgende unntak:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurasjonsproblem: Kan ikke finne Spring NamespaceHandler for navneområde for XML-skjema [//www.springframework.org/schema/security] Krenkende ressurs: klassebane ressurs [securityConfig.xml]

Løsningen er grei - den vår-sikkerhet-config avhengighet mangler fra klassestien til prosjektet:

 org.springframework.security spring-security-config 3.2.5.RELEASE 

Dette vil sette den riktige navneområdebehandleren - i dette tilfellet SecurityNamespaceHandler - på klassestien og klar til å analysere elementene i sikkerhet navneområdet.

Den komplette Maven-konfigurasjonen for et fullstendig Spring Security-oppsett finner du i min forrige Maven-opplæring.

3. //www.springframework.org/schema/aop

Det samme problemet oppstår når du bruker de aop navneområdet uten å ha det nødvendige aop-vårbiblioteket på klassestien:

Det eksakte unntaket:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurasjonsproblem: Kan ikke finne Spring NamespaceHandler for XML-skjemaens navneområde [//www.springframework.org/schema/aop] Krenkende ressurs: ServletContext resource [/ WEB-INF / webConfig. xml]

Løsningen er lik - den vår-aop jar må legges til klassestien til prosjektet:

 org.springframework spring-aop 4.1.0.RELEASE 

I dette tilfellet AopNamespaceHandler vil være til stede på klassestien etter å ha lagt til den nye avhengigheten.

4. //www.springframework.org/schema/tx

Ved hjelp av transaksjonsnavnet - et lite, men veldig nyttig navneområde for konfigurasjonen av transaksjonell semantikk:

vil også resultere i et unntak hvis den rette krukken ikke er på klassestien:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurasjonsproblem: Kan ikke finne Spring NamespaceHandler for XML-skjemaets navneområde [//www.springframework.org/schema/tx] Krenkende ressurs: ressurs for klassesti [daoConfig.xml]

Den manglende avhengigheten her er vår-tx:

 org.springframework spring-tx 4.1.0.RELEASE 

Nå, høyre NamspaceHandler - nemlig TxNamespaceHandler - vil være til stede på klassestien som tillater den deklarative transaksjonsadministrasjonen med både XML og merknader.

5. //www.springframework.org/schema/mvc

Går videre til de mvc navneområdet:

Den manglende avhengigheten vil føre til følgende unntak:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Konfigurasjonsproblem: Kan ikke finne Spring NamespaceHandler for XML-skjemaens navneområde [//www.springframework.org/schema/mvc] Krenkende ressurs: klassebane ressurs [webConfig.xml]

I dette tilfellet er den manglende avhengigheten vår-mvc:

 org.springframework spring-webmvc 4.1.0.RELEASE 

Legge dette til pom.xml vil legge til MvcNamespaceHandler til klassestien - slik at prosjektet kan konfigurere MVC-semantikk ved hjelp av navneområdet.

6. Konklusjon

Til slutt, hvis du bruker Eclipse til å administrere webserveren og distribuere - sørg for at delen for distribusjonsmontering i prosjektet er riktig konfigurert - nemlig at Maven-avhengighetene faktisk er inkludert på klassestien ved distribusjonstidspunktet.

Denne opplæringen diskuterte de vanlige mistenkte for problemet "Ikke mulig å finne Spring NamespaceHandler for XML-skjemanavn" og ga løsninger for hver forekomst.

Sikkerhetsbunn

Jeg kunngjorde nettopp det nye Learn Spring Security-kurset, inkludert hele materialet med fokus på den nye OAuth2-stakken i Spring Security 5:

>> KONTROLLER KURSET

$config[zx-auto] not found$config[zx-overlay] not found