【问题标题】:javax/mail/MessagingException in Spring 4 MVCSpring 4 MVC 中的 javax/mail/MessagingException
【发布时间】:2016-07-14 20:53:51
【问题描述】:

我有一个应用程序(使用注释的 Spring 4 MVC+Hibernate 4+MySQL+Maven 集成示例),使用基于注释的配置将 Spring 与 Hibernate 集成。

启动应用时出现此错误。

GRAVE: Excepción enviando evento inicializado de contexto a instancia de escuchador de clase org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: javax/mail/MessagingException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2615)
    at java.lang.Class.getDeclaredMethods(Class.java:1860)
    at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521)
    at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5001)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5517)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: javax.mail.MessagingException
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
    ... 30 more

我在 pom.xml 中有这个

 <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4</version>
        </dependency>

我已经检查了存储库并且在那里:

/Users/paquirrin/.m2/repository/javax/mail/mail/1.4

我已经更新了 maven 项目 1000 次,但是还是不行!

我在本地主机的 tomcat7 中运行项目

【问题讨论】:

  • 试了1001次,有的时候还可以。。。。。。如果有类的话,试试清理Eclise项目,Tomcat服务器,更新M2E和M2E-WTP。也可以使用最新的 Eclipse。
  • 你是如何运行这个项目的?
  • 我在 localhost 的 tomcat7 中运行项目
  • 不小心把&lt;dependency&gt; 部分放在&lt;dependencyManagement&gt; 中了吗?

标签: java eclipse maven spring-mvc


【解决方案1】:

您不需要将邮件 api 添加到您的类路径中,因为 spring 会传递地包含它们(假设您使用的是 spring-boot)。

如果您使用 引导的 spring-framework,您可以(如 documentation 中的建议),还确保 JavaMail 库 (com.sun.mail:javax.mail) 在类路径上。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.3.27.RELEASE</version>
</dependency>

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

【讨论】:

    【解决方案2】:

    根据 Spring 4 docs 需要一些罐子才能使其工作。您可能缺少其中的一些。

    为了能够使用 Spring Framework 的电子邮件库,您的应用程序的类路径中需要添加以下附加 jar。

    所有这些库都可以在网络上免费获得。

    或者 Maven 可能有问题。有时,如果您删除 .m2 文件夹,然后在您的项目上运行 mvn install 以下载所有具有正确版本的依赖项,这会有所帮助。

    【讨论】:

      【解决方案3】:

      工件已从 javax.mail >> javax.mail-api 中移出。

      所以,最好不要使用下面给出的。

      <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
      <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.4</version>
      </dependency>
      

      改为使用这个最新的依赖项:

      <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
      <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>javax.mail-api</artifactId>
          <version>1.5.6</version>
      </dependency>
      

      添加此依赖后,执行以下步骤:

      • 转到项目菜单>>激活自动构建选项>>然后点击清理选项。

      • 之后,执行 Maven Clean 和 Maven Install。

      • 从tomcat/webapps中删除war和解压的war文件夹,重新部署war。

      这样,问题可能就解决了。

      【讨论】:

        【解决方案4】:

        似乎您使用了错误的依赖项。请尝试以下操作:

        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mailapi</artifactId>
            <version>1.4.3</version>
        </dependency>
        

        确保刷新依赖项,并重建项目。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-13
          • 1970-01-01
          • 1970-01-01
          • 2022-01-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多