【问题标题】:VerifyError in Android 11 debug mode: Rejecting class com.sun.mail.handlers.multipart_mixedAndroid 11 调试模式下的 VerifyError:拒绝类 com.sun.mail.handlers.multipart_mixed
【发布时间】:2021-02-27 18:20:10
【问题描述】:

在 Android 上,我们使用 org.apache.commons.mail.util 中的 MimeMessageParser 将 mime 对象解析为 javax.mail.internet.MimeMessage 对象。 为此,我们安装了一个 MailcapCommandMap,例如 mailcap.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");

当我在 Android 11 (API 30) x86 模拟器或 Android 11 设备 (Pixel 4a) 上以调试模式运行应用程序时,MailcapCommandMap 类会引发 VerifyError:

Rejecting class com.sun.mail.handlers.multipart_mixed that attempts to sub-type erroneous class com.sun.mail.handlers.handler_base (declaration of 'com.sun.mail.handlers.multipart_mixed'

原因如下

java.lang.VerifyError: Verifier rejected class com.sun.mail.handlers.handler_base: java.awt.datatransfer.DataFlavor[] com.sun.mail.handlers.handler_base.getTransferDataFlavors() failed to verify: java.awt.datatransfer.DataFlavor[] com.sun.mail.handlers.handler_base.getTransferDataFlavors(): [0x4] can't resolve returned type 'Unresolved Reference: java.awt.datatransfer.DataFlavor[]' or 'Reference: javax.activation.ActivationDataFlavor[]'

类似的错误似乎与 Proguard resp R8 有关,但混淆被禁用,并且完全相同的代码在发布版本中运行。 由于这只发生在 Android 11 模拟器上,而且 javamail 似乎使用反射,我想知道是否可以以某种方式避免这种行为。

编辑:负责的代码似乎是这样的:

// First try the "application's" class loader.
cld = SecuritySupport.getContextClassLoader();
if (cld == null)
cld = this.getClass().getClassLoader();
Class cl = null;
try {
cl = cld.loadClass(name);
} catch (Exception ex) {
// if anything goes wrong, do it the old way
cl = Class.forName(name);
}
if (cl != null)     // XXX - always true?
return (DataContentHandler)cl.newInstance();

【问题讨论】:

    标签: android jakarta-mail mime-message


    【解决方案1】:

    这是邮件库中的一个错误。见https://github.com/eclipse-ee4j/mail/issues/489

    已在 1.6.6 或 2.0.0 版本中修复

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 2021-02-15
      • 1970-01-01
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      相关资源
      最近更新 更多