4

我正在尝试使用Exchange Web ServicesJava API,我正在创建一个Office365Android应用程序,但不断收到此错误。NoClassDefFoundError:解析失败:Lorg/apache/http/conn/ssl/DefaultHostnameVerifier;

以下相关堆栈信息:

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/conn/ssl/DefaultHostnameVerifier; 
     at microsoft.exchange.webservices.data.core.EwsSSLProtocolSocketFactory.<clinit>(EwsSSLProtocolSocketFactory.java:86) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.createConnectionSocketFactoryRegistry(ExchangeServiceBase.java:212) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.initializeHttpClient(ExchangeServiceBase.java:194) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.<init>(ExchangeServiceBase.java:170) 
     at microsoft.exchange.webservices.data.core.ExchangeService.<init>(ExchangeService.java:3779) 
     at com.microsoft.office365.connect.SendMailActivity.onBookMeetingButton1(SendMailActivity.java:140) 

...

Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.conn.ssl.DefaultHostnameVerifier" on path: DexPathList[[zip file "/data/app/com.microsoft.office365.connect-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
     at microsoft.exchange.webservices.data.core.EwsSSLProtocolSocketFactory.<clinit>(EwsSSLProtocolSocketFactory.java:86) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.createConnectionSocketFactoryRegistry(ExchangeServiceBase.java:212) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.initializeHttpClient(ExchangeServiceBase.java:194) 
     at microsoft.exchange.webservices.data.core.ExchangeServiceBase.<init>(ExchangeServiceBase.java:170) 
     at microsoft.exchange.webservices.data.core.ExchangeService.<init>(ExchangeService.java:3779) 
     at com.microsoft.office365.connect.SendMailActivity.onBookMeetingButton1(SendMailActivity.java:140) 

...

Suppressed: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.DefaultHostnameVerifier 
     at java.lang.Class.classForName(Native Method) 
     at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
     ... 20 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

我HttpClient的4.3.jar我/库/文件夹,这些是我的依赖:

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:22.0.0' 

// base OData library: 
compile group: 'com.microsoft.services', name: 'odata-engine-core', version: '0.12.1' 
compile group: 'com.microsoft.services', name: 'odata-engine-android-impl', version: '0.12.1', ext:'aar' 

// choose the discovery and outlook services 
compile group: 'com.microsoft.services', name: 'discovery-services', version: '0.12.1' 
compile group: 'com.microsoft.services', name: 'outlook-services', version: '0.12.1' 

// Azure Active Directory Library 
compile group: 'com.microsoft.aad', name: 'adal', version: '1.1.1' 

//compile 'org.apache.httpcomponents:httpclient:4.4' 
//compile 'org.apache.httpcomponents:httpcore:4.3.3' 
//compile 'commons-logging:commons-logging:1.2' 
//compile 'joda-time:joda-time:2.7' 
} 

是否有人能够发现这个问题,或者我怎么可能修复它? 谢谢

+0

它再次。找到了解决方案? – Tinashe

+0

@Tinashe,不要放弃它!而是使用Office 365 sdk代替Android。 – mathletics

+0

随着Office 365 SDK你有没有试过访问共享资源?像共享日历一样。 – Tinashe

回答

5

我尝试通过添加以下依赖项。现在,它的工作对我罚款

<dependency> 
    <groupId>org.apache.httpcomponents</groupId> 
    <artifactId>httpclient</artifactId> 
    <version>4.4.1</version> 
</dependency> 
+0

太棒了!我没有使用android,但它为我解决了这个确切的错误! – nterry

+0

在哪个文件中,我把这个代码 –

+0

@KrunalShah你应该把它放在你的maven项目的pom.xml中 – Rams

0

有同样的issue.I固定它通过升级所有org.apache.httpcomponentspom.xml

0

下,我面临同样的问题,但固定加HttpClient的OSGi的在POM

<dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient-osgi</artifactId> 
     <version>4.5.1</version> 
    </dependency> 

它工作正常..