gpt4 book ai didi

当启用断言 (-ea) 时,JavaMail 1.4 总是抛出 AssertionError

转载 作者:行者123 更新时间:2023-11-30 03:26:36 25 4
gpt4 key购买 nike

当使用较旧版本的 JavaMail 1.4 以及启用断言运行的 JVM 时 -ea ,JavaMail 总是抛出 AssertionError连接到 SMTP 服务器时:

Caused by: java.lang.AssertionError
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1578)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1369)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:251)

AssertionError完全出乎意料,我希望连接能够正常工作,并且在没有启用 JVM 断言的情况下它也能正常工作。

除了放弃使用断言运行之外,还有什么办法可以解决此错误吗?

最佳答案

您需要升级到较新的或当前的 JavaMail。这看起来像是一个老错误,现已在 JavaMail 引用实现中修复,修复后版本 1.4。

正在审查SMTPTransport source code ,它执行大量断言,检查代码是否持有当前监视器/锁。其中一个方法缺少synchronized 关键字,导致此错误,从而导致 AssertionError,但前提是显式启用断言。看起来缺少同步块(synchronized block)的方法已在 this revision 中修复。 .

最简单的做法是升级到较新的 JavaMail,或禁用断言。

另请参阅JIRA knowledge base .

关于当启用断言 (-ea) 时,JavaMail 1.4 总是抛出 AssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com