繁体   English   中英

使用 java 11 设置电子邮件

[英]aspose email with java 11

我正在尝试将 aspose 电子邮件版本升级到 20.7,并且我正在为我的项目使用 java 11,但我遇到了这些异常。 aspose 电子邮件 jar 在类路径中。

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.*
 com.* nested exception is java.lang.NoClassDefFoundError: com/aspose/email/MailMessage
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282)
    ... 95 more
Caused by: java.lang.NoClassDefFoundError: com/aspose/email/MailMessage
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)
    at java.base/java.lang.Class.getDeclaredMethods(Class.java:2309)
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:382)
    at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:320)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:798)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:493)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474)
    ... 97 more
Caused by: java.lang.ClassNotFoundException: com.aspose.email.MailMessage
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
    ... 113 more

如果您打算在 JDK11 或更高版本中使用 EWSClient API,我们需要添加 JAXB 依赖项。 所有其他 Aspose.Email API 都可以正常工作,无需任何额外的依赖。

(JAXB API 被认为是 Java EE API,因此不再包含在 Java SE 9 中的默认类路径中。在 Java 11 中,它们完全从 JDK 中删除。stackoverflow 上描述的问题:如何解析 java.lang .NoClassDefFoundError:Java 9 1 中的 javax/xml/bind/JAXBException

Maven JAXB 依赖项:

  • javax.xml.bind jaxb-api 2.3.1
  • com.sun.xml.bind jaxb-impl 2.3.1
  • com.sun.xml.bind jaxb-core 2.3.0.1
  • com.sun.xml.messaging.saaj saaj-impl 1.5.0

在以下线程中也有类似的问题。 https://forum.aspose.com/t/migrating-aspose-email-to-20-7-with-java-11/219092

@MounaAL,

我想你也在Aspose.Email 论坛上关注我们这个问题。 为此,我们在问题跟踪系统中创建了一个 ID 为 EMAILJAVA-34743 的工单。 一旦我们调查并解决问题,您将在Aspose.Email论坛的相关线程中收到更新。

依赖管理允许合并和集中管理依赖版本,而无需添加所有子代继承的依赖。 当您有一组项目(即多个项目)继承了一个共同的父项目时,这尤其有用。

dependencyManagement 的另一个极其重要的用例是控制传递依赖项中使用的工件的版本。

在父 POM 中,dependencies 和 dependencyManagement 的主要区别是:

在依赖项部分中指定的工件将始终作为子模块的依赖项包含在内。

在dependencyManagement 部分中指定的工件,只有在子模块本身的dependencies 部分中也指定时才会包含在子模块中。

您在父 POM 中指定版本和/或范围,并且在指定子 POM 中的依赖项时可以将它们排除在外。 这可以帮助您对子模块的依赖项使用统一版本,而无需在每个子模块中指定版本。

例如,PARENT POM 依赖管理:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-email</artifactId>
            <version>${lib.email.aspose.version}</version>
            <classifier>jdk16</classifier>
        </dependency>
    </dependencies>
</dependencyManagement>

CHILD POM 依赖项:

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-email</artifactId>
        <classifier>jdk16</classifier>
    </dependency>
</dependencies>

我建议你用 maven 构建测试项目。 我确信子模块在依赖项部分包含 Aspose.Email 依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM