2

我正在编写一个 javafx 应用程序来检索谷歌联系人。

在使用 netbeans 清理和构建应用程序并在我的网络浏览器(firefox)中执行应用程序后,一切顺利,但是当应用程序位于不同的服务器中时,应用程序会抛出带有“com.google.common.collect”的“ClassCircularityError”。多组”。

此错误仅在应用程序尝试执行下一个代码时发生:

ContactFeed result = service.getFeed(url, ContactFeed.class);

这是错误:

java.lang.ClassCircularityError: com/google/common/collect/Multisets
at com.google.common.collect.AbstractMultiset.iterator(AbstractMultiset.java:64)
at com.google.common.collect.ConcurrentHashMultiset.iterator(ConcurrentHashMultiset.java:57)
at com.google.gdata.client.SimpleCookieManager.getCookies(SimpleCookieManager.java:72)
at com.google.gdata.client.GoogleService.getCookies(GoogleService.java:530)
at com.google.gdata.client.http.GoogleGDataRequest$GoogleCookieHandler.get(GoogleGDataRequest.java:358)
at sun.net.www.protocol.http.HttpURLConnection.setCookieHeader(HttpURLConnection.java:1180)
at sun.net.www.protocol.http.HttpURLConnection.writeRequests(HttpURLConnection.java:612)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1320)
at sun.net.www.protocol.http.HttpURLConnection.getHeaderFields(HttpURLConnection.java:2683)
at com.google.gdata.client.http.HttpGDataRequest.isOAuthProxyErrorResponse(HttpGDataRequest.java:566)
at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:557)
at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:538)
at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:536)
at com.google.gdata.client.Service.getFeed(Service.java:1135)
at com.google.gdata.client.Service.getFeed(Service.java:1077)
at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:676)
at com.google.gdata.client.Service.getFeed(Service.java:1034)
at mypackage.myApp.start(myApp.java:51)
at com.sun.javafx.applet.FXApplet2$1.run(FXApplet2.java:131)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:173)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)

“com.google.common.collect.Multisets”在番石榴里面。

当一切都位于不同的服务器而不是我的本地计算机中时,我不知道为什么应用程序会失败。

4

1 回答 1

1

看起来您在类路径上有多个版本的 Guava 类,导致类加载期间出现错误。确保你的类路径中没有多个版本的 guava jar,或者 guava.jar 和 google-collections.jar(旧项目)。并检查 gdata 客户端 jar 是否嵌入了番石榴的副本。

于 2012-10-01T08:35:31.897 回答