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注解。

相关推荐
Yang-Never1 小时前
Kotlin协程 -> Job.join() 完整流程图与核心源码分析
android·开发语言·kotlin·android studio
AD钙奶-lalala2 小时前
Mac OS上搭建 http server
java
TomCode先生3 小时前
c#动态树形表达式详解
开发语言·c#
高-老师3 小时前
基于R语言的物种气候生态位动态量化与分布特征模拟
开发语言·r语言·物种气候
大翻哥哥4 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
weixin_437830944 小时前
使用冰狐智能辅助实现图形列表自动点击:OCR与HID技术详解
开发语言·javascript·ocr
鹿鹿学长5 小时前
2025年全国大学生数学建模竞赛(C题) 建模解析|婴儿染色体数学建模|小鹿学长带队指引全代码文章与思路
c语言·开发语言·数学建模
zhousenshan5 小时前
Python爬虫常用框架
开发语言·爬虫·python
皮皮林5516 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904276 小时前
Spring Boot 用户管理系统
java·spring boot·后端