Java SpringMVC:GoogleAPI为JSON键提供空指针

Java SpringMVC:GoogleAPI为JSON键提供空指针,java,spring-mvc,oauth,google-api,google-calendar-api,Java,Spring Mvc,Oauth,Google Api,Google Calendar Api,我正在从事一个SpringMVC项目,我想在其中使用谷歌日历功能。我使用了中的示例代码,并正在尝试实现它。我有ProjectName.json密钥,这些天谷歌使用它进行授权。我得到一个空指针异常。请检查我做错了什么。密钥位于src/main/resources/keys/key.json中。代码如下: public void authorizeAndTest(){ try { httpTransport = new NetHttpTransport(

我正在从事一个SpringMVC项目,我想在其中使用谷歌日历功能。我使用了中的示例代码,并正在尝试实现它。我有ProjectName.json密钥,这些天谷歌使用它进行授权。我得到一个空指针异常。请检查我做错了什么。密钥位于src/main/resources/keys/key.json中。代码如下:

  public void authorizeAndTest(){

        try {
            httpTransport = new NetHttpTransport();
            dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
            Credential credential = authorize();

            client = new com.google.api.services.calendar.Calendar.Builder(httpTransport,JSON_FACTORY,credential).setApplicationName(APPLICATION_NAME).build();

            showCalenders();
            addCalendarsUsingBatch();
            Calendar calendar = addCalendar();
            updateCalendar(calendar);
            addEvent(calendar);
            showEvents(calendar);
            deleteCalendarInBatch();
            deleteCalendar(calendar);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static Credential authorize() throws Exception{
// The line of code below is throwing me an error. I will paste the error log.
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
                new InputStreamReader(OAuth.class.getResourceAsStream("keys/c0cc3b4b7502.json")));
        if (clientSecrets.getDetails().getClientId().startsWith("Enter")
                || clientSecrets.getDetails().getClientSecret().startsWith("Enter ")) {
            System.out.println(
                    "Enter Client ID and Secret from https://code.google.com/apis/console/?api=calendar "
                            + "into calendar-cmdline-sample/src/main/resources/client_secrets.json");
            return null;
        }

        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport,JSON_FACTORY,clientSecrets,
                Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory).build();

// Is this where I pass the email address for which I am trying to get calendar???
        return new AuthorizationCodeInstalledApp(flow,new LocalServerReceiver()).authorize("user@gmail.com");
    }
错误代码:

   java.lang.NoSuchMethodError: com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets.load(Lcom/google/api/client/json/JsonFactory;Ljava/io/Reader;)Lcom/google/api/client/googleapis/auth/oauth2/GoogleClientSecrets;
    com.journaldev.spring.utility.OAuth.authorize(OAuth.java:72)
    com.journaldev.spring.utility.OAuth.authorizeAndTest(OAuth.java:54)
    com.journaldev.spring.controller.PersonController.listCanvas(PersonController.java:596)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:483)
    org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
POM.xml:

   <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-calendar</artifactId>
            <version>v3-rev119-1.19.1</version>
        </dependency>

        <dependency>
            <groupId>com.google.gdata</groupId>
            <artifactId>core</artifactId>
            <version>1.47.1</version>
        </dependency>

        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-calendar</artifactId>
            <version>v3-rev118-1.18.0-rc</version>
        </dependency>

        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson</artifactId>
            <version>1.15.0-rc</version>
        </dependency>

        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client-java6</artifactId>
            <version>1.19.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-calendar</artifactId>
            <version>v3-rev119-1.19.1</version>
        </dependency>

        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client</artifactId>
            <version>1.18.0-rc</version>
        </dependency>

        <dependency>
            <groupId>com.google.api.client</groupId>
            <artifactId>google-api-client</artifactId>
            <version>1.4.1-beta</version>
        </dependency>

        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client</artifactId>
            <version>1.19.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson2</artifactId>
            <version>1.19.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.api.client</groupId>
            <artifactId>google-api-client-json</artifactId>
            <version>1.2.3-alpha</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.0.3.RELEASE</version>
        </dependency>

com.google.api
谷歌api服务日历
v3-rev119-1.19.1
com.google.gdata
核心
1.47.1
com.google.api
谷歌api服务日历
v3-rev118-1.18.0-rc
com.google.http-client
谷歌http客户端jackson
1.15.0-rc
com.google.oauth-client
google-oauth-client-java6
1.19.0
com.google.api
谷歌api服务日历
v3-rev119-1.19.1
com.google.oauth-client
谷歌oauth客户端
1.18.0-rc
com.google.api.client
谷歌api客户端
1.4.1-beta
com.google.http-client
谷歌http客户端
1.19.0
com.google.http-client
google-http-client-jackson2
1.19.0
com.google.api.client
谷歌api客户端json
1.2.3-α
org.springframework.security.oauth
spring-security-oauth2
2.0.3.1发布

猜问题出在这部分(由于路径错误,无法找到json)

试着改用

OAuth.class.getResourceAsStream("/keys/app-name-c0cc3b4b7502.json"))

谢谢,这很有帮助,但现在它找不到有问题的类本身。你能检查一下新的错误日志吗。谢谢。请检查是否包含正确版本的库。我已解决了该问题,请检查以下问题:
OAuth.class.getResourceAsStream("/keys/app-name-c0cc3b4b7502.json"))