Exception: java.lang.NoClassDefFoundError: javax/activation/DataSource when sending mail
Exception: java.lang.NoClassDefFoundError: javax/activation/DataSource when sending mail
我尝试在 NetBeans 上使用 SMTP 发送邮件时收到错误消息:
run: Exception in thread "main" java.lang.NoClassDefFoundError:
javax/activation/DataSource at
SendMail.createMessage(SendMail.java:45) at
SendMail.main(SendMail.java:59) Caused by:
java.lang.ClassNotFoundException: javax.activation.DataSource at
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
at
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 2 more
C:\Users\Admin\AppData\Local\NetBeans\Cache.0\executor-snippets\run.xml:111:
The following error occurred while executing this line:
C:\Users\Admin\AppData\Local\NetBeans\Cache.0\executor-snippets\run.xml:68:
Java returned: 1 BUILD FAILED (total time: 0 seconds)
我需要如何修复它?
(我使用 Apache NetBeans IDE 12.0;
Java: 15; Java HotSpot(TM) 64 位服务器虚拟机 15+36-156)
对于 类,例如 javax.activation.DataSource
,您需要 JavaBeans Activation Framework 的 JAR 文件。
您可以从 Maven Central here 下载 JAR - 单击那里的 jar
link。
如果您使用的是 Maven、Gradle 等依赖管理工具,请使用相关配置(也可在同一页面中找到)。 强烈建议使用依赖管理工具,而不是一个一个地下载 JAR 文件。
您还应该考虑用 jakarta
导入替换您的 javax
导入,因为现在是 where these packages are maintained,向前推进。
如果这样做,则需要使用 Jakarta 激活 API,可用 here。例如:
<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;
并使用 Jakarta Mail 资源,例如:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
我尝试在 NetBeans 上使用 SMTP 发送邮件时收到错误消息:
run: Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataSource at SendMail.createMessage(SendMail.java:45) at SendMail.main(SendMail.java:59) Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 2 more C:\Users\Admin\AppData\Local\NetBeans\Cache.0\executor-snippets\run.xml:111: The following error occurred while executing this line: C:\Users\Admin\AppData\Local\NetBeans\Cache.0\executor-snippets\run.xml:68: Java returned: 1 BUILD FAILED (total time: 0 seconds)
我需要如何修复它?
(我使用 Apache NetBeans IDE 12.0; Java: 15; Java HotSpot(TM) 64 位服务器虚拟机 15+36-156)
对于 类,例如 javax.activation.DataSource
,您需要 JavaBeans Activation Framework 的 JAR 文件。
您可以从 Maven Central here 下载 JAR - 单击那里的 jar
link。
如果您使用的是 Maven、Gradle 等依赖管理工具,请使用相关配置(也可在同一页面中找到)。 强烈建议使用依赖管理工具,而不是一个一个地下载 JAR 文件。
您还应该考虑用 jakarta
导入替换您的 javax
导入,因为现在是 where these packages are maintained,向前推进。
如果这样做,则需要使用 Jakarta 激活 API,可用 here。例如:
<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;
并使用 Jakarta Mail 资源,例如:
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>