2015-05-19 40 views
2

我在尝试使用Gmail IMAP API时遇到此异常。这是我的一段代码。为什么在尝试从Android访问Gmail时收到javax.mail.NoSuchProviderException?

session = Session.getDefaultInstance(props, null); 

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

store.connect(userID,password); 

参考文献:

https://java.net/projects/javamail/lists/users/archive/2012-08/message/0

https://javamail.java.net/nonav/docs/api/com/sun/mail/gimap/package-summary.html

回答

1

我没有让过去的例外,直到我手动添加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”文件。

问题的根本原因可能是Session的loadProviders()方法期间“javamail.providers”文件的可用性。请参阅http://glassfish.sourcearchive.com/documentation/2plus-pb58g-4/classjavax_1_1mail_1_1Session_d90c688f88969065bb3db9716d1ab84a.html

+0

如果将gimap.jar文件添加到类路径中还不够,则类加载器中的某些内容会阻止JavaMail发现包含在gimap.jar文件中的配置文件。 –

相关问题