2017-11-09 16 views
0

Spring Boot 1.5.8でJettyの自動設定に問題があります。私は、Java 6互換性のために桟橋8の代わりに、突堤9を使用する必要がありますが、autoconfigurerは桟橋のクラスを検出しません:Java 6のSpringブートbootRun

 
    EmbeddedServletContainerAutoConfiguration.EmbeddedJetty: 
     Did not match: 
     - @ConditionalOnClass did not find required class 'org.eclipse.jetty.webapp.WebAppContext' (OnClassCondition) 

build.gradleの依存関係の一部:

dependencies { 
    compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.12' 
    compile 'org.springframework.boot:spring-boot-starter-web', { 
     exclude module: 'spring-boot-starter-tomcat' 
     exclude group: 'com.fasterxml.jackson.core' 
    } 

    compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.7.9' // last version for Java 6 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.7.9' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.7.9.1' 

    providedCompile 'javax.servlet:javax.servlet-api:3.0.1' 
    //providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' 

    providedRuntime 'org.springframework.boot:spring-boot-starter-jetty', { 
     exclude group: 'org.eclipse.jetty' 
     exclude group: 'org.eclipse.jetty.websocket' 
    } 
    def JETTY8_VERSION = '8.1.22.v20160922' 
    ['jetty-server', 'jetty-webapp', 'jetty-servlets', 'jetty-continuation', 'jetty-client', 
      'jetty-http', 'jetty-util', 'jetty-io', 'jetty-servlet', 'jetty-xml', 'jetty-security'].each { 
     providedRuntime "org.eclipse.jetty:$it:$JETTY8_VERSION" 
    } 
} 

これが後になり:

 
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:137) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) 
    ... 

奇妙な部分は、私は明示的にEmbeddedServletContainerFactoryBeanを宣言した場合、それが動作し、次のとおりです。

@Bean 
EmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() { 
    try { 
     def clazz = Class.forName('org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory') 
     clazz.newInstance() 
    } catch (NoClassDefFoundError cnfe) { 
     null 
    } 
} 
+0

いずれのスプリングブートバージョン。また、なぜ桟橋の複雑な追加?ちょうど適切なバージョンを設定してください。代わりに 'ext ['jetty.version'] = '8.1.22.v20160922'を設定してください。これはJacksonのext ['jackson.version'] =' 2.7.9 'にも当てはまります。 –

+0

@ M.Deinum It's 1.5.8。私はそれほど良く分からなかったので、私はそのようにしました。 – Artefacto

+0

Spring Boot 1.5ではデフォルトでJava 7が必要です。Java 6の追加設定が必要です。これは[リファレンスガイド](https://docs.spring.io/spring-boot/docs/current/reference)で詳しく説明しています。/htmlsingle /#howto-use-java-6)を使用します。 –

答えて

1

デフォルトでは、Springブート1.5 requires Java 7以上を実行します。しかし、Java 6でSpring Boot 1.5を実行することは可能です。それはthe reference guideに非常によく書かれています。

ご希望のJettyのバージョンを指定するだけで、あなたはそれを忘れてしまいます。

ext['jetty.version'] = '8.1.22.v20160922' 

dependencies { 
    compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.12' 
    compile 'org.springframework.boot:spring-boot-starter-web', { 
     exclude module: 'spring-boot-starter-tomcat' 
     exclude group: 'com.fasterxml.jackson.core' 
    } 

    compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.7.9' // last version for Java 6 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.7.9' 
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.7.9.1' 

    providedCompile 'javax.servlet:javax.servlet-api:3.0.1' 

    providedRuntime 'org.springframework.boot:spring-boot-starter-jetty', { 
     exclude group: 'org.eclipse.jetty.websocket' 
    } 
} 

このように、Springブートには適切なバージョンが含まれており、自分で組み込むことはできません。

関連する問題