首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java 8项目迁移到Java 11

将Java 8项目迁移到Java 11
EN

Stack Overflow用户
提问于 2020-02-11 10:29:30
回答 2查看 16.7K关注 0票数 5

我们有一个使用Java 8构建的存储库,存储库中有多个rest服务。我们希望迁移到Java 11,并试图找出最佳的实现方法。我们正在考虑一个模块一个模块地做。例如,将一个服务改为Java 11,而剩下的仍然是Java 8。我们不确定Maven是否支持这一点?

EN

回答 2

Stack Overflow用户

发布于 2020-02-11 13:16:13

免责声明:这不是答案,只是对我最近经历的部分报告。如果你觉得这个答案不符合SO标准的话,你可以随意标记这个答案。

Maven支持这个吗?

是的,使用编译器插件3.8.0/3.8.1

然而,这种迁移需要额外的注意。

最近,我们从ORACLE JDK 8迁移到OPENJDK 11,这样做了。由于我们有不同任务的存储库,我们面临着各种各样的问题。举几个例子,我在我的电子邮箱里找到了一些贴着jdk11_migration标签的邮件。

  • 这是很明显的,但我想强调的是,为了从java 8迁移到11,我们还必须满足java 9和10的要求。
  • 像cobertura这样的maven插件不支持Java 11,我猜他们永远不会支持它。在某些情况下,这些插件已经到了废弃的生命周期阶段。解决办法是在逐案的情况下寻找替代办法。例如,我们用Jacoco代替了cobertura。
  • rt.jar和tools.jar已经被删除了!你从他们那里得到的任何解释都很可能会被破坏。
  • 现在java 11中不应该在java 9或更低版本中使用的一些类已经不存在了。我说的是访问sun.*、sun.misc等包中的类。解决方案是寻找一对一的替换或重构代码以避免使用。
  • 反射通常是使用的最后一个项目,对于这些情况,在java 9及以上版本中,我们得到如下警告消息: 警告:已发生非法反射访问操作警告:非法反射访问由.警告:请考虑向.的维护人员报告.警告:使用

虽然这不是一个确切的解决方案,但是有一个标志可以消除这个警告--非法访问=许可。这是特别重要的,当使用肯定火maven插件。

  • Java 9介绍了模块系统,当时“现在”我们有包冲突的现象。例如,诸如“包org.w3c.dom可以从多个模块:、java.xml访问”之类的消息。解决方案是找到红元素包含的来源(特别是重复的maven依赖项或依赖项)并删除它。

尽管这对我们来说不是一个问题,但我只是注意到,您的存储库主要由REST组件组成。您可能会面临一些ClassNotFound问题,比如javax.xml.bind之类的包,这些包基本上已经退出了java标准版本。您可以通过将它们明确地包含在您的pom.xml中来修复它。

幸运的是,你可能会发现好的问题&在你的迁移中,无论是在这里,还是在互联网上,你都会发现每一个问题的答案。野外有一些迁徙指南,它们是很好的起点。一些特定的问题,比如混淆和IDE集成,可能需要一点时间,但是,至少在我的经验中,这种迁移比我想象的要轻松。

票数 6
EN

Stack Overflow用户

发布于 2020-02-11 11:38:42

我的建议是升级整个项目。尝试拥有一些Java8和一些Java11模块是非常困难的。正如您已经知道的,从Java9模块开始出现。答案非常笼统,因此很难给出详细的答复。我想:

  • 您的项目由maven管理。
  • 你有很多工艺品(jar)
  • 您正在使用某些库或框架(谁说是Spring?)
  • 您正在使用源代码版本控制(例如Git或Subversion )
  • 您有一个多模块项目。
  • 您编写的代码在Java8和Java11平台上工作。

我建议的计划:

  1. 为Java11项目的版本在SVC上创建一个分支并开始工作。
  2. 为公共定义创建父模块
  3. 将maven插件和所有库升级到最新版本。对于Maven编译器,设置Java11目标( Maven编译器插件的最新版本只支持Java11 )。
  4. 对于每个模块,定义导出的包(并指定需要哪些包)
  5. 如果有许多模块,从其中的几个模块开始,然后包括遗骸。

如果它可以帮助您,让我们看看这个关于github的简单项目 (它的目标是Java11,它是一个多模块的Maven项目)。

希望能帮上忙。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60166816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档