发送邮件时出现异常:java.lang.NoClassDefFoundError: javax/activation/DataSource

2024-01-13

我尝试在 NetBeans 上使用 SMTP 发送邮件时收到错误消息:

运行:线程“主”java.lang.NoClassDefFoundError 中出现异常: javax/激活/数据源位于 SendMail.createMessage(SendMail.java:45) 在 SendMail.main(SendMail.java:59) 原因: java.lang.ClassNotFoundException:javax.activation.DataSource at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 2 更多 C:\Users\Admin\AppData\Local\NetBeans\Cache\12.0\executor-snippets\run.xml:111: 执行该行时出现以下错误: C:\Users\Admin\AppData\Local\NetBeans\Cache\12.0\executor-snippets\run.xml:68: Java 返回:1 BUILD FAILED(总时间:0 秒)

我需要如何修复它?

(我使用 Apache NetBeans IDE 12.0; 爪哇:15; Java HotSpot(TM) 64 位服务器虚拟机 15+36-156)


对于诸如javax.activation.DataSource您需要 JavaBeans 激活框架的 JAR 文件。

您可以从 Maven Central 下载 JARhere https://mvnrepository.com/artifact/javax.activation/activation/1.1.1- 单击jar链接在那里。

如果您使用的是 Maven、Gradle 等依赖管理工具,请使用相关配置(也可在同一页面中找到)。使用依赖管理工具是强力推荐而不是一一下载 JAR 文件。


您还应该考虑更换您的javax进口与jakarta进口,因为现在是这些包的维护位置 https://blogs.oracle.com/javamagazine/post/transition-from-java-ee-to-jakarta-ee, 向前走。

如果您这样做,那么您需要使用 Jakarta Activation API,可用here https://mvnrepository.com/artifact/jakarta.activation/jakarta.activation-api。例如:

<dependency>
    <groupId>jakarta.activation</groupId>
    <artifactId>jakarta.activation-api</artifactId>
    <version>2.0.1</version>
</dependency>

如果您这样做,您还应该替换 JavaMail 类 - 例如,您可以替换它:

import javax.mail.Message;

有了这个:

import jakarta.mail.Message;

并使用一个雅加达邮报 https://mvnrepository.com/artifact/com.sun.mail/jakarta.mail资源,例如:

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>jakarta.mail</artifactId>
    <version>2.0.1</version>
</dependency>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发送邮件时出现异常:java.lang.NoClassDefFoundError: javax/activation/DataSource 的相关文章

随机推荐