首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用java8编译我的项目,然后在java 17上运行它是否可行?

用java8编译我的项目,然后在java 17上运行它是否可行?
EN

Stack Overflow用户
提问于 2021-11-01 05:07:51
回答 1查看 465关注 0票数 2

我读过一些文章,在JDK9中,.* API被删除了。通过删除,这是否意味着它们将从jdk 9中完全删除,或者它们被标记为已弃用?

根据上面的语句,如果项目是jdk 8编译的,它在jdk 17上运行会没有任何问题吗?这是我第一次尝试,由于模块化的变化,tomcat不能支持jdk 8,我遇到了一些问题。

我计划在JDK8中编译,然后在JDK17上运行,直到整个项目符合JDK17(通过JDK17兼容,我的意思是使用更新的API,而不是现有的jdk8过时的API)。

我的方向是正确的吗?或者我应该遵循一种不同的迁移方法?

EN

回答 1

Stack Overflow用户

发布于 2021-11-01 06:01:43

By removed是否意味着它们将从JDK9中完全删除,或者它们被标记为已弃用?

有些只是被标记为不推荐使用。其他的已经被完全删除了,尽管通常不是在Java 9中。大多数删除是在以后完成的,还有一些仍然会发生。如果您查看现在注释为@Deprecated的元素,在某些情况下,注释将正式指示该元素将被删除。

根据上面的语句,如果项目是JDK8编译的,它在JDK17上运行会没有任何问题吗

不一定。另一件已经发生的事情是,对“内部”Java的访问已经逐渐关闭。所以,如果你的应用程序使用这些API,在Java 9中你会得到警告,在Java 11中你会默认得到错误,而在Java 17中,一些访问(我认为)是不可能的。

所以..。可能会有“问题”。

正确的迁移方法是简单地这样做。测试,直到你解决了所有的问题。

显然,这意味着你需要一个测试服务器,你需要使用自动化测试框架进行单元测试,功能测试,UI测试等等。但这些只是好的软件工程实践。你应该已经在关注他们了。

我计划在JDK8中编译,然后在JDK17上运行,直到整个项目符合JDK17(通过JDK17兼容,我的意思是使用更新的API,而不是jdk8现有的过时API)。我的方向是正确的吗?或者我应该遵循一种不同的迁移方法?

不是的。正如@Holger指出的那样,你很容易遇到很多运行时错误……由于Java 17编译器可能会发现的问题。

只有一种方法。真的。在Java 17上编译,直到您确定了所有编译时依赖问题;即,使用已被删除或关闭的API。然后在Java 17上运行,一次又一次地测试,直到发现所有其他问题。

在开始之前,最好检查项目的所有依赖项(库等),看看它们是否是Java17上支持。然后将它们更新到正确的(可能是最新的)版本。

Java 17只发布了几个星期,所以您的一些依赖项很可能还没有跟上。如果是这样的话,在这个阶段以Java11LTS为目标可能是一个更好的想法。

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

https://stackoverflow.com/questions/69792839

复制
相关文章

相似问题

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