gpt4 book ai didi

android - 在 Android 上使用 EWS Java API 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:26 24 4
gpt4 key购买 nike

我尝试在 Android 应用程序中使用 EWS Java API v1.1.5 (http://archive.msdn.microsoft.com/ewsjavaapi),但遇到了一些问题。我下载了源代码,并按照提供的说明在 Eclipse 中编译 EWS Java API。在这些说明中,您被告知要下载并添加以下 pre-requiste 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 应用程序,将适当的权限添加到 list 中,然后将以下源添加到主要 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 文件作为依赖项来运行此应用程序。当我这样做时,我得到了以下 fatal error :

Uncaught handler: thread main exiting due to uncaught exception java.lang.NoClassDefFoundError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager at microsoft.exchange.webservices.data.ExchangeServiceBase.(Unknown Source) at microsoft.exchange.webservices.data.ExchangeServiceBase.(Unknown Source) at microsoft.exchange.webservices.data.ExchangeService.(Unknown Source) at 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: unable to resolve static method 908: Ljavax/xml/stream/XMLOutputFactory; newInstance()Ljavax/xml/stream/XMLOutputFactory; VFY: dead code 0x0008-006a in L microsoft/exchange/webservices/data/EwsUtilities;.formatLogMessage (Ljava/lang/String;Ljava/lang/String;) Ljava/lang/String; VFY: unable to find class referenced in signature (Ljavax/xml/stream/XMLStreamWriter;)

然后最终...

FATAL EXCEPTION: main java.lang.VerifyError: microsoft.exchange.webservices.data.AutodiscoverService at microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl(Unknown Source) at microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(Unknown Source) at 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 中。

最佳答案

您可以通过执行以下步骤使用微软的 EWS api for android,

  1. 下载 URL 中可用的源代码,<强> http://archive.msdn.microsoft.com/ewsjavaapiEWSJavaAPI_1.1.5.zip

  2. 对上述 api 进行更改以在 eclipse 中为 JDK 1.4 工作,例如删除覆盖注释等

  3. 在下面的 URL 中下载 javax.* 包的源代码,<强> http://www.java2s.com/Code/JarDownload/jsr173/jsr173_1.0_src.jar.zip

  4. 在以下网址下载 stax api 的源代码,<强> http://dist.codehaus.org/stax/distributions/stax-src-1.2.0.zip

  5. 将所有源放在eclipse中的单个java项目下

  6. 打开项目资源管理器并选择以“javax”开头的包并重命名为您的公司名称,例如:com注意:Eclipse 将要求更改所有命名上下文,然后单击“确定”。

  7. 将所有 java 源导出到一个 jar 文件。

  8. 那么您可以在 Android 应用程序中使用 jar,没有任何问题。

我使用了上面解释的相同方法,它在 android 应用程序中 100% 完美地工作。

关于android - 在 Android 上使用 EWS Java API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com