jdk1.8升级到jdk11遇到的各种问题

一、第三方依赖使用了BASE64Decoder

如果项目中使用了这个类 sun.misc.BASE64Decoder,就会导致错误,因为再jdk11中,该类已经被删除。

复制代码
Caused by: java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder

当然这个类也有替换方式,替换方式如下:

复制代码
Base64.Encoder encoder = Base64.getEncoder();
 
Base64.Decoder decoder = Base64.getDecoder();

二、类文件具有错误的版本55.0,应为52.0

当项目编译或启动时,如果出现这个错误,那就是你编译的jdk版本和运行的jdk版本不一致导致的。

各个jdk对应的版本如下:

XML 复制代码
Java SE 13 = 57,
Java SE 12 = 56,
Java SE 11 = 55,
Java SE 10 = 54,
Java SE 9 = 53,
Java SE 8 = 52,
Java SE 7 = 51,
Java SE 6.0 = 50,
Java SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45

从上面可知,55是jdk11版本,52为jdk1.8版本。所以尝试修改编译的jdk版本和运行版本一致即可。

idea设置如下:

三、javax.xml.bind.annotation报错

jdk升级完后,项目报javax.xml.bind cannot resolve

原因:jdk11已经移除了javax.xml.bind包

解决方案:重新单独引用,以下给出两种引用方式,要看你项目是用Maven构建还是用gradle构建的项目,自己对应选择即可。

Maven引用方式:

XML 复制代码
<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-core</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>javax.activation</groupId>
  <artifactId>activation</artifactId>
  <version>1.1.1</version>
</dependency>

gradle引用方式:

XML 复制代码
dependencies {
	//由于jdk11删除了java.xml.bind这个包,所以这里要手动重新引入
	implementation 'javax.xml.bind:jaxb-api:2.3.0'
	implementation 'com.sun.xml.bind:jaxb-core:2.3.0'
	implementation 'com.sun.xml.bind:jaxb-impl:2.3.0'
	implementation 'javax.activation:activation:1.1.1'
}

一些额外的知识:

关于javax.xml.bind在各个jdk版本的情况。

  • jdk8:支持
  • jdk9:弃用
  • jdk10:弃用
  • jdk11:移除

四、JDK11无法使用@Resource注解

在jdk11版本以后,javax.annotation这个包被移除了,所以无法使用@Resources。

解决办法也很简单,单独引用即可。下面是用Maven中pom文件的引用方式

XML 复制代码
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

当然了,不用这个注解也行,将@Resources注解,全部替换成@Autowired注解。

相关推荐
ytttr87344 分钟前
隐马尔可夫模型(HMM)MATLAB实现范例
开发语言·算法·matlab
天远Date Lab1 小时前
Python实战:对接天远数据手机号码归属地API,实现精准用户分群与本地化运营
大数据·开发语言·python
listhi5201 小时前
基于Gabor纹理特征与K-means聚类的图像分割(Matlab实现)
开发语言·matlab
野生的码农1 小时前
码农的妇产科实习记录
android·java·人工智能
qq_433776421 小时前
【无标题】
开发语言·php
Davina_yu2 小时前
Windows 下升级 R 语言至最新版
开发语言·windows·r语言
阿珊和她的猫2 小时前
IIFE:JavaScript 中的立即调用函数表达式
开发语言·javascript·状态模式
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 高校人才培养方案管理系统的设计与实现为例,包含答辩的问题和答案
java
listhi5202 小时前
卷积码编码和维特比译码的MATLAB仿真程序
开发语言·matlab
一起努力啊~2 小时前
算法刷题-二分查找
java·数据结构·算法