java.lang.NoClassDefFoundError: javax/activation/DataContentHandler

java.lang.NoClassDefFoundError: javax/activation/DataContentHandler

我正在使用 google 应用程序引擎和 intelliJ IDEA 中的 maven 开发一个网络应用程序。

到目前为止一直很好,直到我尝试使用 javax.mail 发送电子邮件并且我收到此错误:

java.lang.NoClassDefFoundError: javax/activation/DataContentHandler

我已经在 pom.xml 中添加了所需的依赖项 (javax.activation & javax.mail),但仍然出现此错误。

在本地修复它的一种方法是在 vm 选项中添加“--add-modules java.activation”,当我 运行 它在本地工作正常并发送电子邮件时,但是当我'正在部署该应用程序,但它无法正常工作。

我的问题是, 有什么方法可以将 vm 参数传递给 maven 或其他任何地方,这样当我部署应用程序时它将 运行 没有错误。

或者有没有其他方法可以做到这一点(是否使用 javax.mail)?

我的java版本是:openjdk 10.0.2

您可以使用 docker 个容器来做到这一点。 How to properly set the JVM options in a flexible GAE application

因为使用 Maven,您无法在 运行 时间内设置 VM 选项。通过 docker 尝试可能是关键。

只需在您的应用程序中包含 java.activation 模块。

您可以使用 older Oracle version, or the newer Eclipse version,两者基本相同。

(你应该考虑升级到 JDK 11。)