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
}
}
いずれのスプリングブートバージョン。また、なぜ桟橋の複雑な追加?ちょうど適切なバージョンを設定してください。代わりに 'ext ['jetty.version'] = '8.1.22.v20160922'を設定してください。これはJacksonのext ['jackson.version'] =' 2.7.9 'にも当てはまります。 –
@ M.Deinum It's 1.5.8。私はそれほど良く分からなかったので、私はそのようにしました。 – Artefacto
Spring Boot 1.5ではデフォルトでJava 7が必要です。Java 6の追加設定が必要です。これは[リファレンスガイド](https://docs.spring.io/spring-boot/docs/current/reference)で詳しく説明しています。/htmlsingle /#howto-use-java-6)を使用します。 –