无法使用 mailR 包发送电子邮件

2022-09-04 00:44:20

我得到下面提到的错误。我将 mail.jar, activation.jar, mailapi.jar, common-lang3.jar 复制到 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/ext

java.lang.NoClassDefFoundError: javax/activation/DataHandler
    at org.apache.commons.mail.Email.createMimeMessage(Email.java:1832)
    at org.apache.commons.mail.Email.buildMimeMessage(Email.java:1268)
    at org.apache.commons.mail.Email.send(Email.java:1436)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at RJavaTools.invokeMethod(RJavaTools.java:386)
Caused by: java.lang.ClassNotFoundException
    at RJavaClassLoader.findClass(RJavaClassLoader.java:383)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    ... 8 more
NULL
Error: NoClassDefFoundError (Java): javax/activation/DataHandler

答案 1

Vince Fulco在Ubuntu 18.04中提供的链接中的一条评论:https://github.com/rpremraj/mailR/issues/77#issuecomment-465741847

具体说来:

  1. 下载以下.jar文件:

  2. 找出java-mailR文件夹:system.file(“java”,package = “mailR”)

    • 在我的情况下:“/home/MY_USERNAME/R/x86_64-pc-linux-gnu-library/3.5/mailR/java”
  3. 将两个.jar文件复制到该文件夹中

为了以防万一,我在尝试之前重新启动计算机。


答案 2

这是github上一个讨论得很好但迄今为止尚未解决的问题。https://github.com/rpremraj/mailR/issues/77