2017-11-17 3 views
1

Momentan arbeite ich an der Sicherung eines REST SpringBoot Service. Ich habe mich entschieden, oauth2 mit JWT zu verwenden. Aber ich stehe beim Start der Anwendung vor diesem seltsamen Fehler. Ich glaube, dass es einen Fehler bei den Versionen Feder-Security-Core und Spring-Security-JWT geben muss. Hier ist stapeln:NoClassDefFoundError: javax/xml/bind/UnmarshalException - Spring Sicherheit oauth2

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled. 
    2017-11-17 11:47:34.428 ERROR 9604 --- [   main] o.s.boot.SpringApplication    : Application startup failed 

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/UnmarshalException 
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     at 
org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:527) [spring-boot-maven-plugin-1.5.8.RELEASE.jar:1.5.8.RELEASE] 
     at java.base/java.lang.Thread.run(Thread.java:844) [na:na] 
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/UnmarshalException 
     at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     ... 26 common frames omitted 
    Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/UnmarshalException 
     at org.springframework.security.oauth2.provider.error.DefaultOAuth2ExceptionRenderer.geDefaultMessageConverters(DefaultOAuth2ExceptionRenderer.java:117) ~[spring-security-oauth2-2.2.0.RELEASE.jar:na] 
... 
     at 
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.12.RELEASE.jar:4.3.12.RELEASE] 
     ... 27 common frames omitted 
    Caused by: java.lang.ClassNotFoundException: javax.xml.bind.UnmarshalException 
     at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) ~[na:na] 
     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563) ~[na:na] 
     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na] 
     ... 51 common frames omitted 

Hier ist meine pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

... 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-mongodb</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger2</artifactId> 
     <version>2.7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger-ui</artifactId> 
     <version>2.7.0</version> 
    </dependency> 
    <!-- Dependency for embed mongo testing --> 
    <dependency> 
     <groupId>de.flapdoodle.embed</groupId> 
     <artifactId>de.flapdoodle.embed.mongo</artifactId> 
     <version>2.0.0</version> 
     <scope>test</scope> 
    </dependency> 
    **<!-- Dependency for web security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-core</artifactId> 
     <version>3.2.10.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-jwt</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security.oauth</groupId> 
     <artifactId>spring-security-oauth2</artifactId> 
     <version>2.2.0.RELEASE</version> 
    </dependency>** 
</dependencies> 

<properties> 
    <java.version>1.8</java.version> 
</properties> 

Gibt es etwas, das ich auf dieser Konfiguration verpasst haben?

Antwort

0

Sie müssen jaxb Api enthalten, so in Ihrem pom.xml Sie die Abhängigkeit hinzufügen sollte:

<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api --> 
<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.3.0</version> 
</dependency> 
+0

Vielen Dank Alessandro. Aber jetzt habe ich habe Verursacht durch: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory – user2919910

+0

Das ist in com.sun.xml.bind jaxb-impl 2.3.0 siehe [hier] (https://mvnrepository.com/artifect/com.sun.xml.bind/jaxb-impl/2.3.0) – Alessandro

0

Ich weiß, habe, dass meine jdk von jdk-9.0.1 Wechsel zu jdk1.8.0_151, es funktioniert ! Aber ich habe nicht verstanden, warum jdk-9 jaxb nicht unterstützt ?!

+1

Oh, Java 9 implementiert JPMS (Java Platform Module System) so müssen Sie Jaxb-Modul hinzufügen siehe [hier] (https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-F640FA9D-FB66-4D85-AD2B-D931174C09A3) – Alessandro

Verwandte Themen