如何将 Helidon、Jersey、Spock 等升级到 Java 17?

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

有人可以给我指一个项目吗?最好是 GitHub,其中有我们在 Java 17 下运行的关键技术的示例,以便我能够了解和谐的依赖版本?

org.spockframework.util.InternalSpockError: Failed to instantiate spec 'CQRSExceptionMapperSpec'
        at app//org.spockframework.runtime.PlatformSpecRunner.createSpecInstance(PlatformSpecRunner.java:80)
        at app//org.spockframework.runtime.PlatformSpecRunner.runSharedSpec(PlatformSpecRunner.java:45)
. . .
Caused by: java.util.ServiceConfigurationError: Error instantiating :io.helidon.microprofile.server.JaxRsCdiExtension
. . .
Caused by: java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    io/helidon/microprofile/server/JaxRsCdiExtension.toJerseySupport(Ljava/util/function/Supplier;Lio/helidon/microprofile/server/JaxRsApplication;Lorg/glassfish/jersey/internal/inject/InjectionManager;)Lio/helidon/webserver/jersey/JerseySupport; @4: invokestatic
  Reason:
    Type 'org/glassfish/jersey/server/ResourceConfig' (current frame, stack[0]) is not assignable to 'javax/ws/rs/core/Application'
  Current Frame:
    bci: @4
    flags: { }
    locals: { 'io/helidon/microprofile/server/JaxRsCdiExtension', 'java/util/function/Supplier', 'io/helidon/microprofile/server/JaxRsApplication', 'org/glassfish/jersey/internal/inject/InjectionManager' }
    stack: { 'org/glassfish/jersey/server/ResourceConfig' }
  Bytecode:
    0000000: 2cb6 004d b800 4e3a 0419 04b8 0035 c000
    0000010: 4f12 50b9 0051 0200 b600 5257 1904 2cb6
    0000020: 0053 2bb6 0054 c000 55b6 0056 5719 04bb
    0000030: 0057 592a b700 58b6 0059 5719 042d b600
    0000040: 5a57 1904 b600 5bb0                    

    at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373)
    at java.base/java.lang.Class.getConstructor0(Class.java:3578)
    at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2754)
    at org.jboss.weld.util.ServiceLoader.createInstance(ServiceLoader.java:311)
    ... 81 more

我对噪音表示歉意,但我已经在这上面花了太多天了......

我正在尝试将我们的代码库从 Java 8 和 11 更新到 17,但遇到了 Helidon、Jersy、Jackson、Spock、Groovy 等的各种依赖地狱问题。

咨询聊天GPT 我得到很多建议

您提供的错误消息 java.util.ServiceConfigurationError: Error instantiating io.helidon.microprofile.server.JaxRsCdiExtension 表示使用 Helidon MicroProfile Server 时 io.helidon.microprofile.server.JaxRsCdiExtension 类的实例化存在问题.

您可以采取以下几个步骤来排查和解决此问题:

检查依赖项:确保您拥有正确版本的 Helidon MicroProfile 及其依赖项。确保不同依赖项之间不存在版本冲突。

类路径问题:验证所有必需的 JAR 和库是否都包含在类路径中。有时,缺少或冲突的库可能会导致实例化错误。

正确配置:检查您的配置设置。确保您已正确设置 Helidon MicroProfile Server,包括 JAX-RS 和 CDI 扩展所需的任何配置文件或注释。

日志记录和调试:提高日志记录级别以查看是否有更详细的错误消息。这可能会帮助您查明问题的确切原因。

检查已知问题:搜索与您正在使用的 Helidon MicroProfile Server 特定版本相关的任何已知问题。该问题可能是一个已知错误,有解决方法或新版本中的修复。

检查环境:确保您的运行环境(例如 Java 版本)与您使用的 Helidon MicroProfile 版本兼容。

隔离:如果您使用 Maven 或 Gradle 等依赖项管理工具,请尝试构建一个干净的项目或隔离问题,以确保它不是由与其他项目组件的交互引起的。

联系支持或社区:如果您无法自行解决问题,请考虑联系 Helidon MicroProfile 社区或支持渠道。他们也许能够根据您的用例提供具体指导。

请记住,您遇到的错误特定于您的项目及其配置的上下文。仔细检查您的项目设置并系统地排除故障以确定问题的根本原因非常重要。

现在我处于“联系支持或社区”步骤。

来自我们的

gradle.build
我有

ext {
    immutablesVersion = "2.8.8"
    // helidonVersion = "2.6.0"
    helidonVersion = "2.6.2"
    jandexVersion = "0.8.0"
    groovyVersion = "4.0.13"
    spockVersion = "2.3-groovy-4.0"
    jacksonVersion = "2.14.2"
    jerseyJacksonVersion = "3.1.3"
    slf4jVersion = "1.7.30"
    log4j2Version="2.17.1"
    jerseyClientVersion = "2.31"
    apacheCommonsLang3Version = "3.8.1"
    jacksonAnnotationsVersion = "2.14.2"
    jacksonDataformatVersion = "2.14.2"
    jacksonDatabindVersion = "2.14.2"
    gcsVersion = "2.7.2"
    commonsCodecVersion = "1.15"
    nettyVersion = "4.1.86.Final"
    apacheCommonsVersion = "3.8.1"
    commonsCompressVersion = "1.21"
    bouncyCastleBcprovVersion = "1.67"
    jsltVersion = "0.1.11"
    googleLibrariesVersion = "26.1.3"
    prometheusJmxAgentVersion = "0.17.2"
    testngVersion = "7.7.1"
    jsonVersion = "20230227"
    jose4jVersion = "0.9.3"
    lz4JavaVersion = "1.8.0"
    kafkaVersion = "3.4.0"
}

有人可以给我指一个项目吗?最好是 GitHub,其中有我们在 Java 17 下运行的关键技术的示例,以便我能够了解和谐的依赖版本?

groovy jackson jersey spock helidon
1个回答
0
投票

Helidon 提供依赖管理。请参阅 Gradle 示例此处。 你也可以直接看pom这里

© www.soinside.com 2019 - 2024. All rights reserved.