eclipse设置项目为JDK运行 NoClassDefFoundError: javax/xml/bind/DatatypeConverter

✅更多源码 | 课设

✅ 🚀快速解决各种课设毕设,窗体、网站、管理系统,范围 (Java、C#、C/C++、数据库、Vue、小程序)

✅ 🚀 文末联系 可定做🚀

报错原因

请添加图片描述

解决

右键项目,properties

在这里插入图片描述

选择JRE, 点击Edit

在这里插入图片描述

点击

在这里插入图片描述

点击Add

在这里插入图片描述

Next请添加图片描述

请添加图片描述

点击Directory 找到你的JDK安装目录,一般都是C://Program Files//java//jdk1.8

请添加图片描述

选中后会自动识别,然后finish

请添加图片描述

回到了刚刚页面, 将jdk打勾,jre 取消勾选,如下 ,apply and close

请添加图片描述

然后,选中Alternate JRE 选中刚刚添加的jdk,ok了

请添加图片描述

### JDK 17 中 `NoClassDefFoundError` 导致 `javax.xml.bind.DatatypeConverter` 缺失的原因 在 Java 9 及其后续版本中,为了实现更清晰的模块化设计,Java 平台进行了重大的结构调整。作为这一调整的一部分,许多原本属于 Java SE 的功能被移至独立的模块或完全从标准库中删除。其中就包括 JAXB (Java Architecture for XML Binding) API 和相关类,例如 `javax.xml.bind.DatatypeConverter`。 由于这些类是从 Java EE 模块分离出来的,在 Java 9 或更新版本(如 JDK 17)中默认不再提供支持[^4]。当应用程序尝试加载此类时,如果未显式引入相应的依赖项,则会抛出 `java.lang.NoClassDefFoundError` 或 `ClassNotFoundException` 异常。 --- ### 解决方案 #### 方法一:通过 Maven 添加 JAXB API 依赖 要解决此问题,可以将 JAXB API 显式添加到项目的构建工具配置文件中。对于基于 Maven 的项目,需在 `pom.xml` 文件中加入以下依赖: ```xml <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>4.0.0</version> </dependency> ``` 上述代码片段中的两个依赖分别提供了 JAXB 接口定义以及其实现逻辑[^3]。注意这里使用的是 Jakarta 命名空间下的最新版本,适用于较新的 JDK 版本。 #### 方法二:手动下载并导入 JAR 包 如果不采用自动化构建工具管理外部库,也可以直接获取对应的 `.jar` 文件并将它们放置于应用运行路径下。可以从 Maven Central Repository 下载所需组件,并将其添加到项目的 classpath 中。 #### 方法三:降级 JDK 版本 虽然不推荐这种做法,但如果短期内无法迁移现有代码来兼容新环境的话,可以选择回退到较低版本的 JDK (比如 JDK 8),因为该版本仍然内置了完整的 JAXB 支持[^5]。 不过需要注意的是长期维持旧版软件可能存在安全风险等问题,所以仅应视作临时过渡措施而非最终解决方案。 --- ### 示例代码验证修复效果 假设我们有一个简单的测试程序如下所示: ```java import javax.xml.bind.DatatypeConverter; public class TestDatatypeConverter { public static void main(String[] args) { String encodedString = DatatypeConverter.printBase64Binary("Test".getBytes()); System.out.println(encodedString); byte[] decodedBytes = DatatypeConverter.parseBase64Binary(encodedString); System.out.println(new String(decodedBytes)); } } ``` 按照前述任一种方式补充必要的依赖之后重新编译执行以上脚本就不会再遭遇缺少 `DatatypeConverter` 类的情况发生。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学长敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值