赞
踩
JDK17的下载,我选择的是17.0.8版本,Windows的选择如下:
JDK的安装,安装后的目录结构如下:
从网上了解到,因为JDK本身已经模块化了,现在不区分JDK和JRE了,JDK9之后没有JRE了(我之前用的是JDK1.8),所以JDK17安装过程中没有JDK1.8安装时候需要选择是否单独安装JRE那个步骤。
环境变量的配置如下:
打开cmd,用命令 java -version 检查是否设置成功
我这次升级到Java17的项目只是其中一部分,还有一部分还是用的Java1.8,所以要考虑到两个版本JDK共存,这里提供两种使用方式:
直接在环境变量JAVA_HOME中修改路径,用哪个版本就用哪个的路径:
JDK1.8与jdk17并存,在对应的编码工具里面添加JDK17,例如这里,我在idea中添加JDK17,然后再把项目对应的SDK换成Java17就行:
首先要查看IDEA版本和JDK版本对应关系:
链接: https://www.jetbrains.com/help/idea/supported-java-versions.html#2023
IntelliJ IDEA发行版本:
链接: https://www.jetbrains.com/idea/download/other.html
以下是整理的一部分,作为参考:
如果是需要IDEA下载、安装、配置教程的,可以看我另外一篇文章:
链接: https://blog.csdn.net/weixin_50993955/article/details/132320485?spm=1001.2014.3001.5501
我此次是直接将IntelliJ IDEA从2020.1升级到2023.2,也就是当前最新版本,升级后遇到两个问题,一个是新建类的时候报错,并且新建的类变成 .Java文件,如下:
还有一个是运行项目时IDEA报错,报错信息如下:
最后发现是之前卸载IDEA2020.1版本时候把插件和配置留了下来,没清除,升级2023.2后沿用了之前的配置,一个名为codota的插件不兼容导致的,将该插件停用后能正常创建包和类,运行不再报错:
本次添加的jvm参数如下(如果还涉及其他参数,请自行添加):
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
本人试了一下,针对网上推荐的两种配置方式,方式一针对某个应用配置jvm参数,这种方式成功了;方式二中通过idea配置全局参数的方式失败了,参数没生效
方式一:
针对某个应用配置JVM参数
第一步:选择Run下面的Edit Configurations… ,或者点击后面运行框中的Edit Configurations…
第二步:第一步打开后,出现如下界面,点击Modify option(修改选项),然后选择右侧的Add VM options
第三步:这时会出现一个VM options的输入框,在VM options输入框中输入jvm参数
照图中配置完,重新运行项目就行了。
方式二:
idea设置全局的JVM参数
第一步:在菜单栏Help下选择Edit Customer VM Options…
第二步:打开后,可以看到一些默认的参数配置,修改默认的配置的值,或者添加自己的配置
第三步:重启idea
**方式二配置完重启IDEA后,运行依然报下面的错误,说明配置没生效,请知道的大佬指点一二
如果项目中使用的是本地配置的maven,也需要修改
从Java 8换成Java 17,并不是简单的升级,还需要考虑到升级后的容性问题:
下面举例一些运行项目时报的错:
程序包javax.servlet.http不存在
程序包javax.validation不存在
[ERROR] 找不到符号
[ERROR] 符号: 类 EnableEurekaClient
[ERROR] 位置: 程序包 org.springframework.cloud.netflix.eureka
[ERROR] 对于RetryableException(int,java.lang.String,feign.Request.HttpMethod,java.util.Date), 找不到合适的构造器
[ERROR] 构造器 feign.RetryableException.RetryableException(int,java.lang.String,feign.Request.HttpMethod,java.lang.Throwable,java.util.Date,feign.Request)不适用
[ERROR] (实际参数列表和形式参数列表长度不同)
[ERROR] 构造器 feign.RetryableException.RetryableException(int,java.lang.String,feign.Request.HttpMethod,java.util.Date,feign.Request)不适用
[ERROR] (实际参数列表和形式参数列表长度不同)
程序包org.junit不存在
程序包org.junit.runner不存在
程序包junit.framework不存在
其他还有很多版本升级后导致的问题,就不一一列举了,总之从Java1.8升级成Java17不是一个简单的过程,需要不断的分析和测试项目,要仔细阅读官方每个版本的迁移文档。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。