java - Spring--无法转换javax.mail.session

标签 java spring tomcat jakarta-mail

我正在我的 servlet 上下文中创建一个邮件 session ,然后使用 JNDI 将其注入(inject)到我的 spring 框架设计中。这是上下文的样子:

<Resource name="mail/session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.from="noreply@xxxx.com"
            mail.smtp.user="noreply@xxxx.com"
            mail.smtp.auth="true"
            mail.smtp.starttls.enable="true"
/>

以及我将其引入的位置:

  <bean id="smtpSession" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="java:comp/env/mail/session"/>
  </bean>

以及我将其注入(inject) spring java 邮件发件人的位置:

  <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
      <property name="host" ref="smtpHost"/>
      <property name="password" ref="smtpPassword"/>
      <property name="port" ref="smtpPort"/>
      <property name="username" ref="smtpFrom"/>
      <property name="session" ref="smtpSession"/>
  </bean>

现在这是我收到的消息:

Caused by: java.lang.IllegalStateException: Cannot convert value of type [javax.
mail.Session] to required type [javax.mail.Session] for property 'session': no m
atching editors or conversion strategy found
        at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(Ty
peConverterDelegate.java:231)
        at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrap
perImpl.java:447)
        ... 51 more

呃,什么????为什么要尝试转换它?

最佳答案

如果 javax.mail.Session 在您的类路径中,您很可能有两个副本。一个可能来自应用服务器的内部库,另一个可能打包在您应用的 lib 目录中。当您尝试像这样使用它们时,这两个副本会发生冲突。

删除您应用的 lib 目录中的那个,然后重试。

关于java - Spring--无法转换javax.mail.session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8821732/

相关文章:

java - Android FileObserver onEvent 没有被调用

java - Spring中构造函数 Autowiring 创建更多对象

eclipse - Tomcat 从 Eclipse 和 startup.sh 启动

tomcat - 无法在集群中序列化 session

ubuntu - 无法在 Ubuntu 14.04 中添加 OpenJDK 8 存储库

java - 在 IDE 外部运行时出现 ClassNotFoundException

java - 使用逗号拆分字符串,但如果是括号或引号则忽略逗号

java - Spring MVC 类突然找不到 DispatcherServlet

java - Spring AOP - 如何使父上下文中定义的方面在子上下文中工作?

tomcat - Tomcat 7 上的 ActiveMQ Web 控制台 5.6 - Taglibs 中的空指针