javax.ws.rs.core.UriBuilder 的奇怪问题

Chr*_*ipp 3 java gradle kotlin jira-rest-java-api spring-boot

今天我将命令行应用程序更新到 Spring Boot 3.0.6

BeanCreationException我在启动应用程序时收到异常。原因是

Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.UriBuilder
Run Code Online (Sandbox Code Playgroud)

这是 内部需要的com.atlassian.jira.rest.client.api.JiraRestClient。在IDEA中,当我搜索时,javax.ws.rs.core.UriBuilder我没有找到任何课程。

所以我包括了

implementation 'javax.ws.rs:javax.ws.rs-api:2.1.1'
Run Code Online (Sandbox Code Playgroud)

在我的 Gradle 构建中。现在我收到一个

Caused by: java.lang.LinkageError: ClassCastException: attempting to cast
jar:file:/XXX/.gradle/caches/modules-2/files-2.1/javax.ws.rs/javax.ws.rs-api/2.1.1/d3466bc9321fe84f268a1adb3b90373fc14b0eb5/javax.ws.rs-api-2.1.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class to
jar:file:/XXX/.gradle/caches/modules-2/files-2.1/javax.ws.rs/javax.ws.rs-api/2.1.1/d3466bc9321fe84f268a1adb3b90373fc14b0eb5/javax.ws.rs-api-2.1.1.jar!/javax/ws/rs/ext/RuntimeDelegate.class
Run Code Online (Sandbox Code Playgroud)

两行/文件都是相同的。

到目前为止我尝试过的事情:

  • javax.ws.rs检查with的不同版本gradlew dependencies
  • 干净的构建

有谁知道如何解决这个问题以及为什么 UriBuilder 根本消失了?

小智 6

我在 Spring boot 3.0.6 中测试了它

构建.gradle

dependencies {
    implementation("com.atlassian.jira:jira-rest-java-client-core:5.2.5") {
        exclude(group = "org.glassfish.jersey.core", module = "jersey-common")
    }
    implementation("org.glassfish.jersey.core:jersey-common:2.27")
    compileOnly("io.atlassian.fugue:fugue:5.0.0")
}
Run Code Online (Sandbox Code Playgroud)

首先,org.glassfish.jersey.core:jersey-common排除jira-rest-java-client-core

然后,将版本org.glassfish.jersey.core:jersey-common降至 2.27javax.ws.rs:javax.ws.rs-api

Jira api 还没有将 javax 更新到 jakarta,所以我们可以像上面那样解决。