Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Geronimo Javamail不获取消息主题并与默认JVM实现冲突?_Java_Jakarta Mail - Fatal编程技术网

为什么Geronimo Javamail不获取消息主题并与默认JVM实现冲突?

为什么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

在我们的持续集成中,我们遇到了一个测试失败,因为在测试期间发送的新电子邮件不会被下载。深入研究这个问题并启用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

这就是我们的调查结果:

  • 即使您使用的是相同版本的SBT和不同版本的Java,也不能依靠类加载来实现相同的行为
  • Javamail允许您通过设置
    mail.pop3s.class
    为每个存储类专门强制一个属性,您可以覆盖该行为并强制使用
    pop3sslsstore
  • 即使使用此设置,在执行
    message.getSubject
    操作时,也不会在CI中获取消息主题,该操作始终返回null。启用javamail调试表明,在CI上从未执行过TOP命令,而它是在本地执行的。因此,不会从服务器检索消息
  • 明确排除“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上构建的应用程序使用同一个库,它将被再次拉入,而不知道您在哪里以及如何运行应用程序,很难再给您任何建议。