为什么Geronimo Javamail不获取消息主题并与默认JVM实现冲突?
在我们的持续集成中,我们遇到了一个测试失败,因为在测试期间发送的新电子邮件不会被下载。深入研究这个问题并启用javamail调试,我们在本地发现了这一点 调试:getProvider()正在返回 Provider[STORE,pop3s,com.sun.mail.pop3.pop3sslsstore,Oracle] 在CI上 调试:getProvider()返回provider protocol=pop3s; type=javax.mail.Provider$Type@728749b3; class=org.apache.geronimo.javamail.store.pop3.pop3sslslsstore; 供应商= APACHE软件基金会;版本=1.0 这就是我们的调查结果:为什么Geronimo Javamail不获取消息主题并与默认JVM实现冲突?,java,jakarta-mail,Java,Jakarta Mail,在我们的持续集成中,我们遇到了一个测试失败,因为在测试期间发送的新电子邮件不会被下载。深入研究这个问题并启用javamail调试,我们在本地发现了这一点 调试:getProvider()正在返回 Provider[STORE,pop3s,com.sun.mail.pop3.pop3sslsstore,Oracle] 在CI上 调试:getProvider()返回provider protocol=pop3s; type=javax.mail.Provider$Type@728749b3; cla
- 即使您使用的是相同版本的SBT和不同版本的Java,也不能依靠类加载来实现相同的行为
- Javamail允许您通过设置
为每个存储类专门强制一个属性,您可以覆盖该行为并强制使用mail.pop3s.class
pop3sslsstore
- 即使使用此设置,在执行
操作时,也不会在CI中获取消息主题,该操作始终返回null。启用javamail调试表明,在CI上从未执行过TOP命令,而它是在本地执行的。因此,不会从服务器检索消息message.getSubject
- 明确排除“org.apache.geronimo.javamail”中的所有依赖项可以解决这个问题
为什么要使用Geronimo,为什么它会破坏在我们的机器上运行得这么好的默认jvm实现 Geronimo是与Jboss类似的应用服务器。正如JBoss有一个默认的JMS提供程序(JBossMQ/HornetQ等),Geronimo有一个它提供的默认JavaMail实现。我猜您会选择使用它们而不是参考实现,因为它与Geronimo内部的其他特性(例如管理、警报)紧密结合。为什么它无法下载新电子邮件,而不是参考实现?猜测它被埋没在配置中,就像在这些事情上经常发生的那样:(我们仍然在挣扎,即使使用mail.pop3.class和默认的pop3sslsstore,消息也不会被提取(getSubject返回null)您实际上是在Geronimo应用服务器上运行吗?还是因为JavaMail API安装在您的Linux系统上的JDK运行时中,您最终实现了JavaMail API?如果是后者,jsut将其删除并使用JavaMail引用实现。谢谢@BillShannon,我们考虑过这一点,但问题是如果其他我们在同一个CI上构建的应用程序使用同一个库,它将被再次拉入,而不知道您在哪里以及如何运行应用程序,很难再给您提供有关如何操作的建议。Geronimo是一个与Jboss类似的应用程序服务器。正如Jboss有一个默认JMS提供程序(JBossMQ/HornetQ等),Geronimo提供了一个默认的JavaMail实现。我猜您会选择使用他们的JavaMail实现而不是参考实现,因为它与其他功能(例如管理、警报)紧密结合Geronimo内部。与参考实现相比,为什么它无法下载新电子邮件?猜测它被埋没在配置中,因为在这些事情上经常如此:(我们仍然在挣扎,即使使用mail.pop3.class和默认的pop3sslsstore,也无法获取消息(getSubject返回null)您实际上是在Geronimo应用服务器上运行吗?还是因为JavaMail API安装在您的Linux系统上的JDK运行时中,您最终实现了JavaMail API?如果是后者,jsut将其删除并使用JavaMail引用实现。谢谢@BillShannon,我们考虑过这一点,但问题是如果其他我们在同一个CI上构建的应用程序使用同一个库,它将被再次拉入,而不知道您在哪里以及如何运行应用程序,很难再给您任何建议。