kom*_*oma 7 google-app-engine verifyerror google-api-java-client
升级后出现此错误:
java.lang.VerifyError :(类:com/mydomain/server/webservices/OAuth2Utils,方法:newFlow签名:()Lcom/google/api/client/googleapis/auth/oauth2/GoogleAuthorizationCodeFlow;)函数的不兼容参数
不确定这可能是相关的,但有关我的环境的一些信息:
Linux n53sv 3.2.0-24-generic#38-Ubuntu SMP Tue May 1 16:18:50 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux java version"1.6.0_31"Java(TM)SE运行时环境(版本1.6.0_31- b04)Java HotSpot(TM)64位服务器VM(内置20.6-b01,混合模式)
更新:
我把问题剥离到了最低限度,这真的令人难以置信.我创建了一个类BadClassTest,并在Servlet中创建了一个BadClassTest实例.当我的BadClassTest看起来像这样:
public class BadClassTest {
public BadClassTest() {
com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以创建一个实例.
当我的BadClassTest看起来像这样:
public class BadClassTest {
com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport();
public BadClassTest() {
//com.google.api.client.http.HttpTransport HTTP_TRANSPORT = new com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport();
}
}
Run Code Online (Sandbox Code Playgroud)
我现在无法创建BadClassTest的实例.我遇到以下异常:
java.lang.VerifyError :(类:com/klawt/server/BadClassTest,方法:签名:()V)putfield/putstatic中的错误类型
更新(2012 年 6 月 6 日):我们计划在下周初在客户端库的下一个版本中修复此问题。我们只需将包 com.google.api.client.extensions.appengine.http.urlfetch 重命名为 com.google.api.client.extensions.appengine.http
原答案:
我们解决了问题: com.google.api.client.extensions.appengine.http.urlfetch.UrlFetchTransport 包含在 App Engine SDK 的 appengine-local-webapis.jar 中。这个类实际上是错误存在的,而且事实上整个 jar 是不必要的。我们主要建议的解决方法是从 App Engine SDK 安装中删除此 jar。它仅加载到本地开发服务器中,而不加载到生产 App Engine 中。我自己还没有尝试过,但另一位工程师向我保证它应该可以工作。请尝试一下并告诉我。
如果该解决方法不起作用,您可以尝试降级到 App Engine SDK 1.6.5。appengine-local-webapis.jar 是 1.6.6 中的新增内容,这也只是本地开发的一个问题。
最后,如果这对您不起作用,请按照 koma 的推荐切换到 NetHttpTransport。App Engine HttpURLConnection 实现(NetHttpTransport 是在其基础上构建的)中存在一个错误,因为它会用逗号分隔 HTTP 响应标头。UrlFetchTransport 没有这个问题。但是,这不太可能影响大多数开发人员,除非您正在处理重定向并且重定向 URL 中包含逗号。除了旧的日历数据 API 版本 2(不适用于新版本 3)之外,任何 Google API 都不应该出现问题。
我现在正在与 App Engine 团队合作,确保在下一个版本中修复此问题。对于那个很抱歉!
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |