java - 在 Spring 集成中主程序本身出现编译时错误

标签 java spring jakarta-mail spring-integration

我一直在使用 spring 集成来开发一个使用 pop 3 协议(protocol)的邮箱监听器,这样它将监听邮箱并使用 pop3 协议(protocol)读取所有邮件 但我开发了一个主类,在该类中我收到错误,我收到的错误位于下面一行

inputChannel.subscribe(new MessageHandler() {

这是编译时错误,表明AbstractSubscribableChannel 类型中的方法 subscribe(MessageHandler) 不适用于参数 (new MessageHandler(){})

下面是主类

import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessagingException;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.messaging.MessageHandler;


public class GmailInboundPop3AdapterTestApp {

    private static Logger logger = Logger.getLogger(GmailInboundPop3AdapterTestApp.class);

    public static void main (String[] args) throws Exception {
        ApplicationContext ac = new ClassPathXmlApplicationContext("/test1/src/main/resources/gmail-pop3-config.xml");
        DirectChannel inputChannel = ac.getBean("receiveChannel", DirectChannel.class);
        inputChannel.subscribe(new MessageHandler() {
            public void handleMessage(Message<?> message) throws MessagingException {
                logger.info("Message: " + message);
            }
        });
    }
}

请告知如何克服此错误本身

下面还有我的 xml

<int:channel id="receiveChannel" />
    <!-- replace 'userid and 'password' wit the real values -->
    <int-mail:inbound-channel-adapter id="pop3ShouldDeleteTrue"
                        store-uri="pop3://[userid]:[password]@pop.gmail.com/INBOX"
                        channel="receiveChannel"
                        should-delete-messages="true"
                        auto-startup="true"
                        java-mail-properties="javaMailProperties">
            <!-- Will poll every 20 seconds -->
            <int:poller fixed-rate="20000"/>

    </int-mail:inbound-channel-adapter>

    <util:properties id="javaMailProperties">
        <prop key="mail.pop3.socketFactory.fallback">false</prop>
        <prop key="mail.debug">true</prop>
        <prop key="mail.pop3.port">995</prop>
        <prop key="mail.pop3.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
        <prop key="mail.pop3.socketFactory.port">995</prop>
    </util:properties>
</beans>

最佳答案

检查您的 CLASSPATH 中是否有旧的 Spring Integration 版本。自 4.0 以来,它基于 spring-messaging。因此,版本<4.0不接受org.springframework.messaging.MessageHandler - 它必须是org.springframework.integration.core.MessageHandler

所以,从我的角度来看,这只是类路径中版本的混合。

关于java - 在 Spring 集成中主程序本身出现编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31354245/

相关文章:

java - Validator 的目标无效 - Spring MVC

java - 后缀和 openJDK 11 : "No appropriate protocol (protocol is disabled or cipher suites are inappropriate)"

JavaFX 2 窗口图标不工作

Java InputStream 等待数据。

java - 如何修复 Apache Ivy 中的逐出模块问题

java - 无法通过 SMTP 从服务器发送邮件,但我可以从本地主机发送邮件

utf-8 - Java Mail 未显示发件人姓名中的德语字母

java - 编译我的项目时是否编译依赖项本身?

java - 了解Spring框架应用主干概念

java - 尽管有 'DB_CLOSE_ON_EXIT=FALSE',但 H2 内存中测试数据库已关闭