当我尝试执行从这里获得的 Google 身份验证示例代码时,我遇到了一个神秘的错误: https ://developers.google.com/google-apps/calendar/instantiate
我什至不确定哪些信息是相关的,所以我将从头开始。我直接复制并粘贴了代码。我所做的唯一更改是:
- 我在需要的地方插入了自己的身份验证信息
- 我创建了一个主要方法。
- 我导入了一些额外的类,包括
com.google.api.client.http.UrlEncodedContent
我的修改版本在这里:https ://gist.github.com/Glank/cac68a658a9b1aeb393c
我使用以下 Maven 命令构建并运行代码:
mvn clean install
mvn exec:java -Dexec.mainClass="org.mu.TestServlet"
我的 pom 依赖项在这里:https ://gist.github.com/Glank/50fe98a9575e10df6a68
除了一些编码警告之外,代码构建和执行没有任何问题。它给了我一个链接。我去,允许自己访问数据并被重定向到带有代码参数的 uri。在提示“授权码是什么?”后,我将参数复制并粘贴到标准输入中。然后突然,我得到以下异常:
java.lang.reflect.InvocationTargetException
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:601)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NoSuchMethodError: com.google.api.client.http.UrlEncodedContent: method <init>()V not found
at com.google.api.client.auth.oauth2.draft10.AccessTokenRequest.executeUnparsed(AccessTokenRequest.java:444)
at com.google.api.client.auth.oauth2.draft10.AccessTokenRequest.execute(AccessTokenRequest.java:470)
at org.mu.TestServlet.setUp(TestServlet.java:54)
at org.mu.TestServlet.main(TestServlet.java:23)
我查看了 URLEncodeContent 和 AccessTokenRequest 的源代码:
- AccessTokenRequest 源代码:https ://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/auth/ oauth2/draft10/AccessTokenRequest.java?r=8d2015927d8506e63e349129b093c033e074cbdd
- URLEncodedContent 源代码:https ://code.google.com/p/google-api-java-client/source/browse/google-api-client/src/main/java/com/google/api/client/http/ UrlEncodedContent.java?r=8d2015927d8506e63e349129b093c033e074cbdd
没有为 UrlEncodedContent 实现构造函数。从我读过的内容来看,当调用默认构造函数但实现了另一个构造函数时会引发此异常:未找到方法 init()v
任何帮助将不胜感激。