Trying to run Java Quickstart sample Gmail API project in IntelliJ IDEA (2016.3):
https://developers.google.com/gmail/api/quickstart/java
I think that required JARs are added to the project.
Running the project I get:
Apr 12, 2017 8:27:34 AM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for everybody: C:\Users\xxx\.credentials\some-project-name
Apr 12, 2017 8:27:34 AM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for owner: C:\Users\xxx\.credentials\some-project-name
Exception in thread "main" java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
    at com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver.getRedirectUri(LocalServerReceiver.java:98)
    at com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp.authorize(AuthorizationCodeInstalledApp.java:76)
    at Main.authorize(Main.java:98)
    at Main.getGmailService(Main.java:112)
    at Main.main(Main.java:123)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
How to get rid of this error and run the project?
JSON file is in place, when I delete it, i get "file not found" IOException in getGmailService() for json file.
Main.authorize(Main.java:98) is
        Credential credential = new AuthorizationCodeInstalledApp(
            flow, new LocalServerReceiver()).authorize("user");
Main.getGmailService(Main.java:112) is
        Credential credential = authorize();
in public static Gmail getGmailService() throws IOException {.
getGmailService() and authorize() are defined as:
    public static Gmail getGmailService() throws IOException {
    Credential credential = authorize();
    return new Gmail.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
            .setApplicationName(APPLICATION_NAME)
            .build();
}
authorize()
    public static Credential authorize() throws IOException {
    // Load client secrets.
    //System.err.println("Main.class.getResourceAsStream("/"): "+Main.class.getResourceAsStream("/")); // debug
    //InputStream in = Main.class.getResourceAsStream("/client_secret.json");
    File jsonFile = new File("client_secret.json");
    InputStream in = new FileInputStream(jsonFile);
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
    // Build flow and trigger user authorization request.
    GoogleAuthorizationCodeFlow flow =
            new GoogleAuthorizationCodeFlow.Builder(
                    HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
                    .setDataStoreFactory(DATA_STORE_FACTORY)
                    .setAccessType("offline")
                    .build();
    Credential credential = new AuthorizationCodeInstalledApp(
            flow, new LocalServerReceiver()).authorize("user");
    System.out.println(
            "Credentials saved to " + DATA_STORE_DIR.getAbsolutePath());
    return credential;
}
 
     
    