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> 

它工作正常..