2

Googleの連絡先を取得するためにjavafxアプリをプログラミングしています。

netbeans を使用してアプリをクリーニングおよびビルドし、Web ブラウザー (firefox) でアプリを実行すると、すべてがうまくいきますが、アプリが別のサーバーにある場合、アプリケーションは「com.google.common.collect.マルチセット」。

このエラーは、アプリが次のコードを実行しようとしたときにのみ発生します。

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 クラスの複数のバージョンがあり、クラスのロード中にエラーが発生しているようです。クラスパスに複数のバージョンのグアバ jar、または guava.jar と google-collections.jar (古いプロジェクト) の両方がないことを確認してください。そして、gdata クライアント jar に guava のコピーが埋め込まれていないことを確認します。

于 2012-10-01T08:35:31.897 に答える