0

I want to create a simple java program that creates a new appointment for my outlook calendar, but I don't know what went wrong.

I also tried to send a simple email but it gives the same error.

source code: https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide

public class test {
    static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
        public boolean autodiscoverRedirectionUrlValidationCallback(
                String redirectionUrl) {
            return redirectionUrl.toLowerCase().startsWith("https://");
        }
    }
    public static void main(String[] args){
        try {
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
            ExchangeCredentials credentials = new WebCredentials("email@bc.ac.id", "password");
            service.setCredentials(credentials);
            service.autodiscoverUrl("email@bc.ac.id", new RedirectionUrlCallback());
            Appointment appointment = new Appointment(service);
            appointment.setSubject("Appointment for JAVA XML TEST");
            appointment.setBody(MessageBody.getMessageBodyFromText("Test Body Msg in JAVA"));
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date startDate = formatter.parse("2019-04-16 12:00:00");
            Date endDate = formatter.parse("2019-04-16 13:00:00");
            appointment.setStart(startDate);//new Date(2010-1900,5-1,20,20,00));
            appointment.setEnd(endDate); //new Date(2010-1900,5-1,20,21,00));
            appointment.save();
        }
        catch (Exception e){
            System.out.println(e);
        }
    }
}

Error code:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException
    at microsoft.exchange.webservices.data.core.ExchangeService.internalCreateItems(ExchangeService.java:593)
    at microsoft.exchange.webservices.data.core.ExchangeService.createItem(ExchangeService.java:657)
    at microsoft.exchange.webservices.data.core.service.item.Item.internalCreate(Item.java:245)
    at microsoft.exchange.webservices.data.core.service.item.Item.save(Item.java:386)
    at test.main(test.java:33)
Caused by: java.lang.ClassNotFoundException: javax.xml.ws.http.HTTPException
   at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
   at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
   ... 5 more
  • By the way, you are using terrible date-date classes that were supplanted years ago by the modern *java.time* classes. And you are ignoring crucial issue of time zone. – Basil Bourque Apr 26 '19 at 09:04

2 Answers2

0

Turn out Java 11 doesn't include jaxws-api.jar anymore and I have to download the jar on https://mvnrepository.com/artifact/javax.xml.ws/jaxws-api/2.2.1 then import it to my project.

0

Eris Suryaputra, why are you using such out-of-date stuff?

Plus, for you and anyone using EWS, please beware that by Oct. 13, 2020, Microsoft expects that all administrators with third-party tools that rely on Exchange Web Services for Office 365 integration will have switched to Microsoft Graph. On that same date, support for Basic Authentication in EWS will fully stop as you can see at https://www.codementor.io/@anananet/using-java-to-integrate-with-microsoft-exchange-server-15h1qq0lzg.

ananeto
  • 16
  • 1