关于java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream解决办法

本文解决了一个常见的Java开发问题,即在使用邮件发送功能时遇到的NoClassDefFoundError错误。通过分析javax.mail和javax.activation包与JDK自带版本的冲突,给出了详细的解决方案,包括删除特定的jar包。

吉林的一个项目有个错误找了一天,有段报错是:   java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream

 1、遇到过两次,第一次是在写一个邮件发送的功能,听同学说要删除myeclipse中的相应jar。

 2、第二次更纠结了,在项目启动时一个job的轮询要启动发送邮件的功能,而我在测试其他功能时要先启动一部分job,就各种报错

找了一天都不知道哪错了。最后看见了 mail的错误,试着删了那个jar包就好了。

 

主要原因如下:

 

javax.mail和javax.activation这两个包已经在javaEE5当中属于基础包了,就是JDK中自带了已经,但是里面的方法与现在外面的mail.jar和activation.jar有一些出入,所以初学者在直接copy别人代码的时候往往会出现上面的错误。 
废话不多说下面是解决方法 
进到

X:/Program Files/MyEclipse 6.5/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.5.0.zmyeclipse650200806/data/libraryset/EE_5

这个路径里,可以看到javaee.jar,用rar把这个文件打开,然后进到javax文件夹里,删除mail.jar和activation.jar(我的javaee.jar里,这两个东西是文件夹,总之删掉就OK,不过要注意备份一下)

删掉之后运行相应的代码,应该不会再出现mail的相应错误了。

 

`java.lang.NoClassDefFoundError: com/sun/xml/bind/Util` 错误通常表明运行时环境中缺少与 JAXB(Java Architecture for XML Binding)相关的类库。此类问题常见于 JDK 8 及更高版本,因为 JAXB 已不再默认包含在 JDK 中[^2]。 具体来说,`com.sun.xml.bind.Util` 类属于 `jaxb-impl` 库的一部分。当应用程序尝试使用 JAXB 的某些实现细节时,如果未正确配置依赖项,则会导致此异常。 ### 解决方案 #### 方法一:通过 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-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> ``` 上述依赖项包括了 JAXB API、JAXB 实现(`jaxb-impl`)、核心模块(`jaxb-core`)以及激活框架(`activation`),这些共同构成了完整的 JAXB 支持。 #### 方法二:手动下载并添加 JAR 文件 如果你不使用 Maven 或其他构建工具,可以手动下载以下 JAR 文件,并将其添加到项目的类路径中: - `jaxb-api.jar` - `jaxb-impl.jar` - `jaxb-core.jar` - `activation.jar` 这些文件可以从 [Maven Central](https://search.maven.org/) 下载对应的版本。 #### 方法三:检查运行环境 确保你的 Java 运行环境没有遗漏任何关键组件。例如,在某些轻量级容器或裁剪过的 JDK 发行版中,可能需要显式安装额外的包以支持 JAXB 功能。 --- ### 常见原因分析 1. **JDK 版本问题**:JDK 8 及以上版本已不再内置 JAXB,因此需要手动添加依赖。 2. **依赖版本不兼容**:确保所有 JAXB 相关依赖的版本一致,避免出现类冲突。 3. **依赖缺失**:未正确引入 `jaxb-impl` 等必要依赖,导致运行时找不到具体实现类。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值