本人大二马上大三,几天前做了一个ssm整合项目随便找的,但是他用的jdk版本是8,虽然b站上面的视频基本都是8,但是我当时下jdk也没想那么多肯定是新版本啥的觉得好用就17了还是长期支持版本。我是不是该下个jdk在项目中把版本改过去呢...
Comments
登录后评论
Sign Injava8 真的要弃用了,语法太啰嗦,整个屏幕都是声明代码,比如:
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(uds);
PasswordEncoder passwordEncoder = getBeanOrNull(PasswordEncoder.class);
用 var 类型推断写成:
var provider = new DaoAuthenticationProvider();
provider.setUserDetailsService(uds);
var passwordEncoder = getBeanOrNull(PasswordEncoder.class);
还有 switch、instance 语法可以简化很多代码,17 就挺好的,spring boot 已经支持 java17 很久了,后面的 spring boot3 要求最低 java 版本是 17,会强制切换
我有和你相似的经历, 不过我是SpringBoot2 工程中途切换到Java17 添加了这几个pom依赖解决了
<!--解决Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter-->
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
当然, 你可以先尝试一下修改项目Java版本, 运行一下看看是否报错, 如果出现了我类似的问题再添加依赖
对于IDEA你可以在 project structure 中改变Java版本
我没有没有使用过很多Java17 的新特性, 但是我感觉有一点是编译速度更快了
Java很强调向下兼容, 对于迁移Java版本其实没那么难