NoSuchMethod error getting a gdata service

2019-01-18 00:45发布

I get the following error:

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.of([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableSet;
at com.google.gdata.wireformats.AltFormat$Builder.setAcceptableTypes(AltFormat.java:399)
at com.google.gdata.wireformats.AltFormat$Builder.setAcceptableXmlTypes(AltFormat.java:387)
at com.google.gdata.wireformats.AltFormat.<clinit>(AltFormat.java:49)
at com.google.gdata.client.Service.<clinit>(Service.java:558)
at testproject.TestProject.run(TestProject.java:22)
at testproject.TestProject.main(TestProject.java:31)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

This comes from the following code:

package testproject;

import com.google.gdata.client.youtube.YouTubeService;
import com.google.gdata.util.*;
import java.util.logging.*;

public class TestProject {

  public static void main(String[] args) {
    try {
      YouTubeService service = new YouTubeService("Test", "developerKey");
      service.setUserCredentials("root@gmail.com", "pa$$word");
    } catch (AuthenticationException ex) {
      Logger.getLogger(TestProject.class.getName()).log(Level.SEVERE, null, ex);
    }
  }
}

At first, I included every library in http://code.google.com/p/gdata-java-client/downloads/list and also imported much more than I needed to. I've since removed the libraries I deemed unnecessary (thanks thinksteep). So the libraries I'm currently including are the following libraries:

mail.jar
activation.jar
ant.jar
gdata-core-1.0.jar
gdata-media-1.0.jar
guava-11.0.1.jar
gdata-youtube-2.0.jar
gdata-youtube-met-2.0.jar

(There are probably a few libraries there which are not necessary... But I'm at my whit's end...) I'm just trying to test getting a YouTube service so I can get things going on this project, but no dice. Oh, and I've also included this library: http://code.google.com/p/guava-libraries because before I was getting a NoClassDefFound error and including that library seemed to solve it. Thank you in advance for the help! Oh, and I also followed every step exactly (or at least I think so) in the gdata getting started guide. My test build was successful by the end... Thanks again!

7条回答
乱世女痞
2楼-- · 2019-01-18 01:14

The Required library jars are as follows.

gdata-client-1.0.jar
gdata-core-1.0.jar
gdata-media-1.0.jar
gdata-youtube-2.0.jar
guava-11.0.2.jar
java-mail-1.4.4.jar

I am using the above mentioned library . Please make use of it ; because the ultimate aim is to get the YouTubeService Object. Check below for the code snippet.

package com.baba.test;
/*
* Author : Somanath Nanda
*/


import java.net.MalformedURLException;
import java.net.URL;
import com.google.gdata.client.youtube.YouTubeQuery;
import com.google.gdata.client.youtube.YouTubeService;
public class Test {
private static final String CLIENT_ID = "XXXXXXXX.XXXXX.XXX.XXX";
private static final String DEVELOPER_KEY = "*********************************88";
public static void main(String[] args) throws MalformedURLException {
YouTubeService service = new YouTubeService(CLIENT_ID,DEVELOPER_KEY);
System.out.println("Service : "+service);
}
查看更多
走好不送
3楼-- · 2019-01-18 01:14

I have added googlecollection-exp.jar into my build path then the previous execption was gone.

查看更多
狗以群分
4楼-- · 2019-01-18 01:15

If you're using a build tool, such as Maven, then you could simply do something similar to the following example from a portion of the dependencies section in my pom.xml:

<!-- The mail dependency is required BEFORE the javaee-api dependency.
         The gdata dependency (YouTube API) requires the mail dependency. -->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.gdata</groupId>
        <artifactId>core</artifactId>
        <version>1.47.1</version>
    </dependency>
查看更多
干净又极端
5楼-- · 2019-01-18 01:23

Issue with latest version of gdata still referencing older guava methods

Check Out http://code.google.com/p/gdata-java-client/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&id=344

Solution

I switched to guava-r07.jar located at http://code.google.com/p/guava-libraries/downloads/detail?name=guava-r07.zip&can=4&q=

This got me past ContactsService service = new ContactsService("");

Jar's in use:

  • Default Eclipse plugin jar's
  • gdata-base-1.0.jar
  • gdata-client-1.0.jar
  • gdata-contacts-3.0.jar
  • gdata-core-1.0.jar
  • gdata-media-1.0.jar
  • guava-r07.jar

  • Apache (servlet-api.jar)

  • JavaMail (mail.jar)
  • JavaBeans Activation Framework (activation.jar)
查看更多
在下西门庆
6楼-- · 2019-01-18 01:24

I dont know if its still relevant but i had the same exception

there is a problem with guava 11.02.jar (currently latest version)

when using guava-10.0.1 (can be found here) everything went well.

查看更多
闹够了就滚
7楼-- · 2019-01-18 01:25

Pay attention to this jar gdata-core-1.0.jar I have the same problem, and I realized I have problem with this jar gdata-core-1.0.jar, and I found from website the same jar gdata-core-1.0.jar, but the content is different. After I replaced the new gdata-core-1.0.jar, problem solved.

So it's tricky that the jar with the same name but their contents are not the same. you thought you have the jar, actually it's not the right one

查看更多
登录 后发表回答