为什么我在尝试从Android访问Gmail时会遇到javax.mail.NoSuchProviderException?

为什么我在尝试从Android访问Gmail时会遇到javax.mail.NoSuchProviderException?,java,android,jakarta-mail,gmail-imap,Java,Android,Jakarta Mail,Gmail Imap,我在尝试使用Gmail IMAP API时遇到此异常。这是我的一段代码 session = Session.getDefaultInstance(props, null); // Exception occurs on the line below store = (GmailSSLStore) session.getStore("gimaps"); store.connect(userID,password); 参考资料: 在手动将gmail IMAP提供程序添加到会话之前,我没有通过

我在尝试使用Gmail IMAP API时遇到此异常。这是我的一段代码

session = Session.getDefaultInstance(props, null);

// Exception occurs on the line below
store = (GmailSSLStore) session.getStore("gimaps");

store.connect(userID,password);
参考资料:


在手动将gmail IMAP提供程序添加到会话之前,我没有通过异常:

session = Session.getDefaultInstance(props, null);

// Adding Provider here corrected issue
session.addProvider(new Provider(Provider.Type.STORE, "gimaps", "com.sun.mail.gimap.GmailSSLStore","Oracle","1.5.4"));

store = (GmailSSLStore) session.getStore("gimaps");

store.connect(userID,password);
这些信息来自gimap.jar的“META-INF/javamail.providers”文件


问题的根本原因可能是会话的loadProviders()方法期间“javamail.providers”文件的可用性。请参阅。

如果将gimap.jar文件添加到类路径中还不够,那么类加载器中的某些内容会导致JavaMail无法发现gimap.jar文件中包含的配置文件。