【发布时间】:2012-03-01 11:08:00
【问题描述】:
我正在尝试在 Android 应用程序中使用 EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi),但遇到了许多问题。 我下载了源代码,并按照提供的说明在 Eclipse 中编译 EWS Java API。在这些说明中,您被告知下载并 添加以下前置 jar 文件依赖项:
- commons-codec-1.4.jar
- commons-httpclient-3.1.jar
- commons-logging-1.1.1.jar
- jcifs-1.3.15.jar
我这样做了,并按照构建说明生成了以下 jar 文件:
- EWSAPI-1.1.0.jar
- EWSAPIWithJars-1.1.0
接下来,我构建了一个全新的 Android 应用程序,将适当的权限添加到清单中,然后将以下源添加到主 Activity 的 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 文件作为依赖项来运行此应用程序。当我这样做时,我得到了以下致命错误:
未捕获的处理程序:线程主因未捕获的异常而退出 java.lang.NoClassDefFoundError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager 在 microsoft.exchange.webservices.data.ExchangeServiceBase.(未知 来源)在 microsoft.exchange.webservices.data.ExchangeServiceBase.(未知 来源)在 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:L 中的死代码 0x0008-006a 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 jar,它与 Android 库中包含的 HttpClient 4.0 jar 冲突。
我的问题是我是否有办法在 Android 项目中使用 EWS Java API 而无需重新编写其中引用的部分 HttpClient 3.1 特有的东西,4.0 中不再存在。
【问题讨论】:
-
“更新:辞职。找到了一份更好的工作。”
-
能否请您提供获取生成 jar 文件的构建说明的链接。这是要生成的2个jar文件。请帮助..这对我来说很紧急
标签: android exchangewebservices apache-commons-httpclient ewsjavaapi