由于 jakarta 注释,运行应用程序时出错

问题描述 投票:0回答:1

当我尝试运行 Spring Boot 应用程序时,出现此错误。

异常启动过滤器[requestContextFilter]

java.lang.NoClassDefFoundError:jakarta/annotation/PostConstruct

这是我的 gradle 文件。

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.1.5'
    id 'io.spring.dependency-management' version '1.1.3'
    id "com.google.protobuf" version "0.8.17"
}

group = 'Hospital'
version = '0.0.1-SNAPSHOT'
protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.17.3"
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.42.1'
        }
    }
    generateProtoTasks {
        all()*.plugins {
            grpc {}
        }
    }
}
java {
    sourceCompatibility = '17'
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'net.devh:grpc-server-spring-boot-starter:2.15.0.RELEASE'
    implementation 'jakarta.annotation:jakarta.annotation-api:1.3.5'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

我是 gRPC 和 java 依赖项的新手。这里有什么问题呢?我向我的依赖项添加了 javax 注释,但在运行时仍然收到之前的错误。

spring-boot gradle dependencies grpc jakarta-migration
1个回答
0
投票

您的目标是

1.3.5
工件的
jakarta.annotation:jakarta.annotation-api
版本。

与雅加达迁移后的其他工件一样,Eclipse 团队发布了具有新坐标的旧

javax
工件。

这个

1.3.5
版本是基于
javax

您应该使用从

2.0.0
开始的版本,
2.1.1
应该是一个好的开始。

    implementation 'jakarta.annotation:jakarta.annotation-api:2.1.1'
© www.soinside.com 2019 - 2024. All rights reserved.