java.lang.ClassNotFoundException:带有Spring Boot 3和Jetty服务器的jakarta. servlet. http. HttpSessionContext

hmae6n7t  于 2023-01-01  发布在  Spring
关注(0)|答案(2)|浏览(256)

在我的社区中,我尝试在升级生产代码之前使用Sping Boot 3和Jetty服务器运行一个小示例,但我遇到了java.lang.ClassNotFoundException: jakarta.servlet.http.HttpSessionContext错误,服务无法启动。

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上运行,而不用迁移到另一个服务器上。

qq24tv8q

qq24tv8q1#

由于Jaokim Erdfelt已经是mentioned,Sping Boot 3依赖于Jakarta Servlet 6.0.0(参见https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes),并且spring-boot-starter-jetty包括构建在Jakarta Servlet 5.0.0上的Jetty 11(参见https://java.libhunt.com/jetty-project-changelog/11.0.0)。
要使用jetty,您必须降低jakarta-servlet版本(请参见https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide#jetty)设置

ext["jakarta-servlet.version"] = "5.0.0"
xriantvc

xriantvc2#

Spring 3适用于Servlet 6,可在Jetty 12+中使用

相关问题