在我的GAE / J项目中,我尝试使用Google API,电子表格和日历。
但Spreadsheets API CONTAINER包含google-collect-1.0-rc1.jar,其中包含较旧版本的Joiner类。
日历需要更新版本的(使用on()方法),它与日历API容器中的guava-jdk5-13.0.jar一起提供。
当日历代码运行时,Joiner类已经解析(成为旧版本)并因NoSuchMethod错误而失败。
这意味着它们不兼容。我尝试了多个类路径设置而没有运气。电子表格访问有效,但日历访问失败。
其他人看过这个并找到了解决方法吗?
答案 0 :(得分:1)
尝试从google-collect-1.0-rc1.jar中删除Joiner类 - 我从几个jar文件中删除了类,不是很干净,但工作正常。
答案 1 :(得分:1)
'google-collect-1.0-rc1.jar已弃用,已被'guava'jar取代,如下所述: https://code.google.com/p/guava-libraries/wiki/GuavaExplained
问题是,正如OP所述,某些Google API确实不兼容,需要一些非常小心的处理。例如,Google Spreadsheets API仍然附带google-collect-1.0-rc1.jar
了解更多信息,请参阅: https://code.google.com/p/gdata-java-client/issues/detail?id=344
这就是我让Calendars(Oauth)使用Spreadsheets(使用客户端库)所做的工作:
引起:java.lang.NoSuchMethodError:
com.google.common.collect.ImmutableSet.of([Ljava /郎/对象;)LCOM /谷歌/普通/收集/ ImmutableSet;
手动管理罐子还可以在必要时切换罐子,如上所述。
System.out.println(“URL:”+ Thread.currentThread()。getContextClassLoader()。的getResource( “COM /谷歌/普通/收集/ ImmutableSet.class”));