2017-11-17 19 views
1

現在、私はREST SpringBootサービスを確保するために取り組んでいます。私はJWTでoauth2を使うことに決めました。しかし、私はアプリケーションの起動時にその奇妙なエラーに直面しています。私は春・セキュリティ・コアと、スプリング・セキュリティ・JWTのバージョンにいくつかのミスがなければならないと考えています。ここでスタックされています。ここではNoClassDefFoundError:javax/xml/bind/UnmarshalException - Springセキュリティ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 

は私の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> 

は、私はその設定に見逃しているものはありますか?

答えて

0

あなたのpom.xmlあなたはその依存関係を追加する必要がでて、JAXB APIを含める必要があります:

<!-- 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

どうもありがとうアレッサンドロ。しかし、今、私はによって引き起こさガット:java.lang.ClassNotFoundExceptionが:com.sun.xml.internal.bind.v2.ContextFactory – user2919910

+0

com.sun.xml.bind JAXB-IMPLに だこと 2.3.0 [こちら](https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl/2.3.0) – Alessandro

0

私はjdk1.8.0_151にJDK-9.0.1から私のJDKを変更する、それが動作することを実現しました!しかし、jdk-9にjaxbサポートが含まれていない理由を理解できませんでしたか?

+1

ああ、Java 9はJPMS(Java Platform Module System )ので、jaxbモジュールを追加する必要があります[こちら](https://docs.oracle.com/javase/9​​/migrate/toc.htm#JSMIG-GUID-F640FA9D-FB66-4D85-AD2B-D931174C09A3) – Alessandro

関連する問題