Я пытаюсь использовать EWS Java API версии 1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi) в приложении для Android и столкнулся с рядом проблем. Я скачал исходный код и следовал инструкциям по компиляции EWS Java API в Eclipse. В этих инструкциях вам предлагается загрузить и добавить следующие необходимые зависимости файла jar:
- общий кодек-1.4.jar
- Commons-httpclient-3.1.jar
- Commons-регистрация-1.1.1.jar
- jcifs-1.3.15.jar
Я сделал это и, следуя инструкциям по сборке, создал следующие файлы jar:
- EWSAPI-1.1.0.jar
- EWSAPIWithJars-1.1.0
Затем я создал совершенно новое приложение для Android, добавил соответствующие разрешения в манифест, а затем добавил следующий источник в OnCreate основного действия:
ExchangeService service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials("emailaddress", "password");
service.setCredentials(credentials);
try
{
service.autodiscoverUrl("emailaddress", this);
}
catch (Exception e)
{
e.printStackTrace();
}
Сначала я попытался запустить это приложение с файлом EWSAPI-1.1.0.jar в качестве зависимости. Когда я это сделал, я получил следующую фатальную ошибку:
Неперехваченный обработчик: основной поток завершается из-за необработанного исключения .(Неизвестный источник) в microsoft.exchange.webservices.data.ExchangeService.(Неизвестный источник) в com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:40)
Из того, что я исследовал, кажется, что эта ошибка возникает из-за того, что Android поставляется с Apache HttpClient 4.0, который, похоже, больше не имеет класса MultiThreadedHttpConnectionManager.
Если вместо этого я удалю EWSAPI-1.1.0.jar и вместо этого использую файл EWSAPIWithJARS-1.1.0.jar в качестве зависимости, я получаю следующую ошибку:
VFY: не удалось разрешить статический метод 908: Ljavax/xml/stream/XMLOutputFactory; newInstance()Ljavax/xml/stream/XMLOutputFactory; VFY: мертвый код 0x0008-006a в L microsoft/exchange/webservices/data/EwsUtilities;.formatLogMessage (Ljava/lang/String;Ljava/lang/String;) Ljava/lang/String; VFY: не удалось найти класс, указанный в подписи (Ljavax/xml/stream/XMLStreamWriter;)
А потом в конце концов...
НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: основной java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService в microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl (неизвестный источник) в microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl (неизвестный источник ) в com.meshin.exchange.ExchangeDiscoveryActivity.onCreate(ExchangeDiscoveryActivity.java:41)
Я предполагаю, что теперь я включаю банку HttpClient 3.1, и она конфликтует с банкой HttpClient 4.0, включенной в библиотеки Android.
Мой вопрос заключается в том, есть ли способ использовать EWS Java API в проекте Android без необходимости переписывать его части, которые ссылаются на специфичные для HttpClient 3.1 вещи, которых больше нет в 4.0.