コミュニティです。実稼働コードをアップグレードする前に、Spring Boot 3 と Jetty サーバーで小さな例を実行しようとしていますが、このエラーが発生しjava.lang.ClassNotFoundException: jakarta.servlet.http.HttpSessionContext
、サービスが起動しません。これは私の Gradle 構成です。
plugins {
id 'java'
id 'idea'
id 'org.springframework.boot' version '3.0.1'
id 'io.spring.dependency-management' version '1.1.0'
}
idea {
module {
downloadJavadoc = false
downloadSources = false
}
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-jetty'
implementation('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
および依存関係。
HttpSessionContext クラスはもう存在しませんが、何らかの理由で、最新バージョンの Jetty はまだそれに依存しています。
別のサーバーに移行せずに Jetty で実行できるようにしたいと考えています。
ベストアンサー1
2013年12月23日更新
Jettyでは回避策はもう必要ありませんバージョン12をリリースサーブレット 6.0.0 をサポートしています。したがって、jetty 12 を含む spring-boot 3.2.0 (spring-boot-starter-jetty:3.2.0) に更新するだけです。
起源
ヤオキム・エルドフェルトがすでに述べたように言及されたSpring Boot 3はJakarta Servlet 6.0.0に依存しています(https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-リリースノート) と spring-boot-starter-jetty には、Jakarta Servlet 5.0.0 をベースに構築された Jetty 11 が含まれています (https://java.libhunt.com/jetty-project-changelog/11.0.0)。つまり、これはスターター自体の問題です。
jettyを使用するには、jakarta-servletのバージョンをダウングレードする必要があります(Spring Boot 3.0 移行ガイド)設定
ext["jakarta-servlet.version"] = "5.0.0"