解决 org.eclipse.jface.text.Document class file version 61.0 报错

问题描述

运行好好的项目,没有做任何改动,最近在编译时报以下错误

java.lang.UnsupportedClassVersionError: org/eclipse/jface/text/Document has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0

大概意思是org.eclipse.jface.text.Document是Java17编译的,而当前运行环境是Java11,这就奇怪了,工程的POM依赖也没变过,自己也没使用过Java17,怎么会引入Java17的类。

问题排查

首先找到这个jar包被依赖的地方

<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.29.0</version>
</dependency>

再进去org.eclipse.jdt.core的pom查看,发现了org.eclipse.text的依赖版本是从 >= 3.6.0, < 4.0.0
之间的一个最新版本

<dependency>
  <groupId>org.eclipse.platform</groupId>
  <artifactId>org.eclipse.core.resources</artifactId>
  <version>[3.14.0,4.0.0)</version>
</dependency>
<dependency>
  <groupId>org.eclipse.platform</groupId>
  <artifactId>org.eclipse.core.runtime</artifactId>
  <version>[3.13.0,4.0.0)</version>
</dependency>
<dependency>
  <groupId>org.eclipse.platform</groupId>
  <artifactId>org.eclipse.core.filesystem</artifactId>
  <version>[1.7.0,2.0.0)</version>
</dependency>
<dependency>
  <groupId>org.eclipse.platform</groupId>
  <artifactId>org.eclipse.text</artifactId>
  <version>[3.6.0,4.0.0)</version>
</dependency>

再到本地的Maven仓找一下这个jar包,此时最新的是3.13.0,具体路径如下:
\org\eclipse\platform\org.eclipse.text\3.13.0\org.eclipse.text-3.13.0.jar

用解压工具打开这个jar包,查看\META-INF\MANIFEST.MF文件,发现确实是Java17编译的
在这里插入图片描述
然后,官网也打开看了下,确实最近的版本已经是基于Java17的了
在这里插入图片描述

问题解决

知道了这个原因,限定使用Java11版本的相关组件就可以了:

<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>${eclipse-jdt-core.version}</version>
    <exclusions>
        <exclusion>
           <groupId>org.eclipse.platform</groupId>
           <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.core.resources</artifactId>
    <version>3.18.200</version>
</dependency>
<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.core.runtime</artifactId>
    <version>3.26.100</version>
</dependency>
<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.core.filesystem</artifactId>
    <version>1.10.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.platform</groupId>
    <artifactId>org.eclipse.text</artifactId>
    <version>3.12.300</version>
</dependency>

最后

感觉如果换JDK这么大改动的话,起码版本要升一个高一点的吧,比如4.x, 或者不要使用版本范围。这么搞一下,有点不厚道啊。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值