无法在Runnable或Spring Controller中实例化EWS ExchangeService

问题描述

我在TimerTask中有一个EWS服务,但是它在实例化new ExchangeService(ExchangeVersion.Exchange2010_SP2)时抛出了异常,并且在以@RequestMapping修饰但可以实例化的spring-web-mvc Controller方法中不起作用在非Runnable类中效果很好。

public class AutoEmailTicketing extends TimerTask {
    @Override
    public void run() {
        microsoft.exchange.webservices.data.ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
        service.setCredentials(new WebCredentials(email,password));
        service.autodiscoverUrl(email,new RedirectionUrlCallback());
        service.setTraceEnabled(true);
        Folder inbox = Folder.bind(service,WellKnownFolderName.Inbox);
    }
}

用过的罐子...

commons-codec-1.7.jar
commons-logging-1.1.1.jar
commons-beanutils-1.8.2.jar
EWSJavaAPI_1.2.1.jar
EWSJavaAPI_1.2original.jar
EWSJavaAPIWithJars_1.2.1.jar
jcifs-1.3.17.jar
httpclient-4.2.5.jar
httpcore-4.2.4.jar

异常日志如下...

Exception in thread "Timer-0" java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init>(Ljava/lang/String;ILorg/apache/http/conn/scheme/SchemeSocketFactory;)V
at org.apache.http.impl.conn.SchemeRegistryFactory.createDefault(SchemeRegistryFactory.java:47)
at org.apache.http.impl.conn.PoolingClientConnectionManager.<init>(PoolingClientConnectionManager.java:93)
at microsoft.exchange.webservices.data.ExchangeServiceBase.<init>(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.<init>(Unknown Source)
at com.mbl.messaging.service.ews.AutoEmailTicketing.run(AutoEmailTicketing.java:4)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)

解决方法

最后在Here找到一个解决方案。我用过...

httpclient-4.2.jar
httpcore-4.2.jar
joda-time-2.9.9.jar

我不知道joda-time是否依赖它。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...