在 java 11 项目中使用wiremock-jre-8 依赖项会出现问题吗?

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

免责声明

提前抱歉,如果这是一个愚蠢的问题,但我澄清这一点的研究并没有我需要的那么成功。

问题描述

我正在使用 jdk 11 开发一个项目,为了获得适当的测试覆盖率,我添加了一些东西来模拟外部服务的调用/应答。所以我包括了wiremock。 正如他们的设置入门部分所建议的,我包括了

testImplementation "com.github.tomakehurst:wiremock-jre8:2.34.0"

尽管我的机器上一切正常(并且测试在管道上运行良好),但我不知道这是否会在其他机器上引起问题。参与该项目的架构师也表达了他对我们只使用 jre 11 的担忧。

因此,我需要更多的见解来改变事情或争论为什么这不是问题。

迄今为止的尝试

我预计mavencentral上会有更高版本的wiremock,但只有两个项目:

令我惊讶的是,wiremock-jre8 是最新版本。我不知道旧版本是用什么编译的,但我使用的注释无论如何都不适用于 2020 版本。因此,最好不要将当前的实现降级为可读性较差的解决方案。

我要提一下,我只是从命名上猜测wiremock-jre8是用jdk8编译的。我没有找到任何关于编译器为这些依赖项生成字节码的证据,也没有找到关于如何解释它的线索。

当试图弄清楚前后可组合性如何与 java、编译器和生成的字节码一起工作时,我发现了这篇较早的帖子。简而言之,它指出:

从 javac 的角度来看兼容性(因为它是 JDK 特有的部分),这意味着生成的字节码可以在 jvm 的未来版本中运行(与 JRE 更相关,但也捆绑在 JDK 中) ).

  • JDK(通常)是向前兼容的。
  • JRE(通常)向后兼容。

我确实部分理解,但不完全理解我的问题。尤其是“通常”部分。 那么是否有人需要提供更多见解来启发我? :)

java jvm migration javac mvn-repo
2个回答
1
投票

其文档的下载和安装部分包含这句话:

此外,这些 JAR 的版本针对 Java 7 和 Java 8+ 进行分发。

因此,如果您仍在运行 Java 1.7,则必须使用 Java 7 的版本。

对于 Java 的所有更高版本,都有适用于 Java 8+ 的版本(您使用的版本)。

由于这是一个积极支持的项目,与 Java 8 之后的 Java 版本相关的任何问题都将得到正确处理和解决(例如,请参阅构建并完全支持 JDK 17,该问题已在“com.github.tomakehurst:wiremock-”中解决) jre8:2.32.0").


0
投票

实际上您可能会遇到一个问题。

wiremock-jre8-standalone
javax.annnotations 包中有一些类,与官方 javax.annotations 结合使用可能会导致拆分包错误。

我在使用

wiremock-spring-boot
时遇到了问题,并通过排除
wiremock-jre8-standalone
并添加较新的
wiremock-standalone

解决了该问题
        <!-- https://mvnrepository.com/artifact/com.github.tomakehurst/wiremock -->
        <dependency>
            <groupId>com.maciejwalkowiak.spring</groupId>
            <artifactId>wiremock-spring-boot</artifactId>
            <version>1.0.1</version>
            <exclusions>
                <exclusion>
                    <groupId>com.github.tomakehurst</groupId>
                    <artifactId>wiremock-jre8-standalone</artifactId>
                </exclusion>
            </exclusions>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.github.tomakehurst/wiremock-standalone -->
        <dependency>
            <groupId>com.github.tomakehurst</groupId>
            <artifactId>wiremock-standalone</artifactId>
            <version>3.0.1</version>
            <scope>test</scope>
        </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.