1

YouTube API を使用してサブスクリプションのリストを取得するために、クラスパスで次の jar を使用しました。

gdata-client-1.0.jar gdata-core-1.0.jar gdata-media-1.0.jar gdata-youtube-2.0.jar guava-14.0-rc1.jar mail.jar

コードは次のとおりです。

import com.google.gdata.client.*;
import com.google.gdata.client.youtube.*;
import com.google.gdata.data.*;
import com.google.gdata.data.geo.impl.*;
import com.google.gdata.data.media.*;
import com.google.gdata.data.media.mediarss.*;
import com.google.gdata.data.youtube.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.io.IOException;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

public class YouTubeExample {


    public static void main (String args[]) throws MalformedURLException, IOException, ServiceException{
        String developer_key = "CSCSCSCSCSCScSCXXXXX-XXXXX_-XXXX";
        YouTubeService service = new YouTubeService(developer_key); 

        //Retrieving video subscriptions
        String feedUrl =
                "http://gdata.youtube.com/feeds/api/users/GoogleDevelopers/subscriptions";

        SubscriptionFeed feed = service.getFeed(new URL(feedUrl), SubscriptionFeed.class);

        for(SubscriptionEntry entry : feed.getEntries()) {
            System.out.println("Title: " + entry.getTitle().getPlainText());
            System.out.println("Feed Link: " + entry.getFeedUrl());
        }

    }

}

しかし、これを実行すると、次のようなエラーが発生します。

スレッド「メイン」の例外 java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet; com.google.gdata.wireformats.AltFormat$Builder.setAcceptableTypes(AltFormat.java:399) com.google.gdata.wireformats.AltFormat$Builder.setAcceptableXmlTypes(AltFormat.java:387) com.google.gdata.wireformats .AltFormat.(AltFormat.java:49) at com.google.gdata.client.Service.(Service.java:535) at YouTubeExample.main(YouTubeExample.java:21)

クラスパスで guava-14.0-rc1.jar を guava-10.0.1.jar (いくつかの提案によると古いバージョン) に置き換えても、次のようなエラーが発生します。

スレッド「メイン」の例外 java.lang.NoSuchMethodError: com.google.gdata.data.ExtensionProfile.declareAdditionalNamespace(Lcom/google/gdata/util/common/xml/XmlWriter$Namespace;)V at com.google.gdata.data .youtube.CommentEntry.declareExtensions(CommentEntry.java:92) at com.google.gdata.data.ExtensionProfile.addDeclarations(ExtensionProfile.java:71) at com.google.gdata.data.BaseFeed.declareExtensions(BaseFeed.java:229) ) com.google.gdata.data.ExtensionProfile.addDeclarations(ExtensionProfile.java:71) で com.google.gdata.client.youtube.YouTubeService.(YouTubeService.java:140) で com.google.gdata.client.youtube .YouTubeService.(YouTubeService.java:103) で YouTubeExample.main(YouTubeExample.java:21)

私はactivation.jar、servlet-api.jarを含めようとしましたが、うまくいきません! guava 0.7 jar などの古いバージョンも試しましたが、うまくいきませんでした。助けてください!

4

1 に答える 1

2

すべてをインポートしないでください。

プロジェクトは最近のAPIと古いAPIの両方に依存しているようです。あなたはすべきではありません。したがって、このページの内容を正確に確認してください。

Mavenを使用する場合、コードを実行するには、次のものだけが必要です。

<dependencies>
    <dependency>
        <groupId>com.google.gdata</groupId>
        <artifactId>core</artifactId>
        <version>1.47.1</version>
    </dependency>
</dependencies>

Mavenは、すべての非表示の依存関係を確認できるので興味深いものです。それらを手動で管理して、最新バージョンのライブラリをすべて適切にインストールすることができます。

完全なツリーには、次のものが含まれます。

core: 1.47.1
  guava: 13.0.1
  google-oauth-client-jetty: 1.11.0-beta
    google-oauth-client-java6: 1.11.0-beta
      google-auth-client: 1.11.0-beta
        google-http-client: 1.11.0-beta
          jsr305: 1.3.9 (omitted for conflict with 1.3.7)
          guava: 11.0.1 (omitted for conflict with 13.0.1)
          httpclient: 4.0.3
            httpcore: 4.0.1
            commons-logging: 1.1.1
            commons-codec: 1.3
          xpp3: 1.1.4
        jsr305: 1.3.9 (omitted for conflict with 1.3.7)
        guava: 11.0.1 (omitted for conflict with 13.0.1)
    jetty: 6.1.26
      jetty-util: 6.1.26
      servlet-api: 2.5-20081211
  jsr305: 1.3.7
  mail: 1.4
    activation: 1.1

このツリーは、guava 13.0.1を使用しても安全であり、含めようとした他のすべてのAPIは実際には必要ないことを示しているため、無視してください。

Mavenを使用していない場合は、次のプロジェクトを使用してください:https ://code.google.com/p/gdata-java-client/downloads/list

于 2013-02-20T10:13:37.410 に答える