2016-09-13 70 views
0

org.apache.commons.mail.MultiPartEmail的创建实例的以下问题occures:Wildfly 10.1.0的ClassNotFoundException:javax.mail.Authenticator

java.lang.NoClassDefFoundError: javax/mail/Authenticator 
    at mypackage.MyClass.sendMail(MyClass.java:123) 
... 
Caused by: java.lang.ClassNotFoundException: javax.mail.Authenticator from [Module "org.apache.commons:main" from local module loader @5a4041cc (finder: local module finder @15b3e5b (roots: C:\wildfly-10.1.0.Final\modules,C:\wildfly-10.1.0.Final\modules\system\layers\base))] 

的pom.xml包含:

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-email</artifactId> 
    <version>1.3.3</version> 
    <scope>provided</scope> 
</dependency> 

wildfly-10.1.0.Final \ modules \ org \ apache \ commons \ main \ commons-email-1.3.3.jar \ org \ apache \ commons \ mail \ MultiPartEmail.class存在,jboss-deployment-structure.xml包含:

<module name="org.apache.commons" /> 
<system export="true"> 
    <paths> 
    <path name="javax/api"/> 
    <path name="javax/activation/api"/> 
    <path name="javax/mail/api"/> 
    </paths> 
</system> 
+0

哪个版本的Wildfly?也许这有帮助? http://stackoverflow.com/questions/31650024/wildfly-9-javax-mail-is-not-working – ozOli

+0

你不应该在jboss-deployment-structure.xml中包含所有这些路径。此外,'javax.activation.api'模块应该已经作为依赖于您的部署的'javaee.api'模块。你在'jboss-deployment-structure.xml'中有模块排除吗? –

+0

@jamesr使用Wildfly 10.1.0。 jboss-deployment-structure.xml中没有模块排除。感谢读完它后的答案,我再次研究了[部署的隐式模块依赖关系](https://docs.jboss.org/author/display/WFLY10/Implicit+module+dependencies+for+deployments)和modules \ system \ layers \ base \ javax \ api \ main \ module.xml,并理解为什么不需要在jboss-deployment-structure.xml中包含那些javax/*路径。 –

回答

0

删除<scope>provided</scope>

+0

没有'提供'同样的问题发生。 –

+0

对不起,我没有注意到commons-email依赖在pom.xml中发生了两次。删除'提供'解决了这个问题。 wildfly-10.1.0.Final \ modules \ org \ apache \ commons \ main \ module.xml是很久以前创建的,并且没有被怀疑,但是缺少javax.activation.api和javax.mail.api依赖项。 –

相关问题