当我尝试执行从这里获得的 Google 身份验证示例代码时,我遇到了一个神秘错误: https://developers.google.com/google-apps/calendar/instantiate
我什至不确定哪些信息是相关的,所以我将从头开始。我直接复制粘贴了代码。我所做的唯一更改是:
- 我将自己的身份验证信息插入到需要的位置
- 我创建了一个 main 方法。
- 我导入了一些其他类,包括
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 实现构造函数。据我所知,当调用默认构造函数但实现了另一个构造函数时,会引发此异常:method init()v not found
任何帮助将不胜感激。
最佳答案
我不确定是什么导致了错误,但我在从头开始并忽略该特定代码示例后设法使其正常工作。我认为问题出在我的 pom 中依赖项版本不匹配 - 现在它们都是版本 1.15.1-rc。无论如何,如果其他人有类似的问题,这是我的工作代码:
关于java - 使用maven在java中实现google身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17411309/