无法在java中运行youtubedata api 2.0,因为问题与guava有关

无法在java中运行youtubedata api 2.0,因为问题与guava有关,java,youtube-api,guava,Java,Youtube Api,Guava,我在类路径上使用了以下JAR,用于使用YouTube API检索订阅列表: gdata-client-1.0.jar gdata-core-1.0.jar gdata-media-1.0.jar gdata-youtube-2.0.jar 番石榴-14.0-rc1.jar mail.jar 代码如下: import com.google.gdata.client.*; import com.google.gdata.client.youtube.*; import com.google.gdat

我在类路径上使用了以下JAR,用于使用YouTube API检索订阅列表:

gdata-client-1.0.jar gdata-core-1.0.jar gdata-media-1.0.jar gdata-youtube-2.0.jar 番石榴-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());
        }

    }

}
但在运行此命令时,我得到一个错误,如下所示:

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());
        }

    }

}
线程“main”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) 位于com.google.gdata.client.Service(Service.java:535) 在YouTubeExample.main(YouTubeExample.java:21)

如果我在类路径中将guava-14.0-rc1.jar替换为guava-10.0.1.jar(根据一些建议是旧版本),我仍然会得到如下错误:

线程“main”java.lang.NoSuchMethodError中出现异常:com.google.gdata.data.ExtensionProfile.declareAdditionalNamespace(Lcom/google/gdata/util/common/xml/XmlWriter$Namespace;)V 位于com.google.gdata.data.youtube.commentry.declareExtensions(CommentEntry.java:92) 位于com.google.gdata.data.ExtensionProfile.addDeclarations(ExtensionProfile.java:71) 位于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,但没有成功。请帮助!

不要导入所有这些

你的项目似乎既依赖于最新的API,也依赖于旧的API。你不应该这样做。所以只需检查一下上面的内容

使用Maven时,要运行代码,我只需要以下内容:

<dependencies>
    <dependency>
        <groupId>com.google.gdata</groupId>
        <artifactId>core</artifactId>
        <version>1.47.1</version>
    </dependency>
</dependencies>
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
这棵树向我们展示了使用Guava13.0.1是安全的,并且您并不需要尝试包含的所有其他API,因此只需忽略它们即可


如果您没有使用Maven,请简单地使用此处的项目:

So?示例需要显示足够的内容,以便于理解。在这种情况下,我不知道
pom.xml
的其余部分如何有用。我不是在这里教Maven,因为我为那些不熟悉Maven的人提供了一个“变通方法”。我只是想说,只有一个depend这是需要的。上面的Maven操作完美地实现了这一点。在这种情况下,不需要编写完整的
pom.xml