gpt4 book ai didi

java - 如果生产代码针对的是较旧的 JRE,那么在测试代码中使用新的 JDK API 是否安全?

转载 作者:行者123 更新时间:2023-12-01 19:44:51 25 4
gpt4 key购买 nike

我正在使用最新的 JDK 构建 Maven 模块,但目标是 JRE 8。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>8</release>
</configuration>
</plugin>

由于生成的 jar 文件中不包含单元测试,我假设我可以使用较新 JDK 中的 API,例如 JEP 269 中的集合工厂方法。 .

我可以这样做吗?或者我应该预料到会出现什么问题吗?

<小时/>

额外问题:我什至可以使用新的语言功能,例如 JEP 286 中的 var 类型名称?如果是这样,需要什么才能说服 Maven 使用与生产代码不同的源版本来编译测试代码?

最佳答案

我一直认为使用“-target/-source”进行编译可以确保我的类与目标 Java 版本 100% 兼容。

我错了。

就我而言:

  1. 我使用的是 Ant/build.xml 或 Eclipse,以及 Java 1.7...

  2. ...构建 .jar 和 .wars,以便在运行 Java 1.5 或 1.6 的 WebSphere 应用程序服务器下运行。

  3. 即使类文件具有与目标匹配的版本标记...

  4. ....jar/.war 有时可能会引入针对较新 Java 版本的不需要的依赖项

  5. 我的解决方案:

    a) 我保留了“旧 JDK”的副本(包括用于 Ant 构建的“旧”tools.jar)

    b) 我编写了一个 .bat 文件来使用旧的 JDK 进行构建(我需要一个 .bat 文件,因为 Eclipse/Ant 拒绝针对旧的 Java 运行)

回答您的问题:

  • 应该可以工作...

  • ...但是测试一下它。

  • 如果您想“谨慎行事” - 则使用目标版本进行实际构建(就像我所做的那样)。

关于java - 如果生产代码针对的是较旧的 JRE,那么在测试代码中使用新的 JDK API 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53785767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com