我正在我的 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/