2012-02-10 2 views
3

я получаю следующее сообщение об ошибке:NoSuchMethod ошибка при получении услуги GData

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) 

Это происходит из следующего кода:

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("[email protected]", "pa$$word"); 
    } catch (AuthenticationException ex) { 
     Logger.getLogger(TestProject.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    } 
} 

В первой, я включил каждую библиотеку в http://code.google.com/p/gdata-java-client/downloads/list, а также импортирован многое другое чем мне нужно. С тех пор я удалил библиотеки, которые я счел ненужными (спасибо thinksteep). Так библиотек я в настоящее время, включая следующие библиотеки:

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 

(Есть, вероятно, несколько библиотек, которые там не нужны ... Но я в конце моей йоты в ...) Я m просто пытаюсь проверить получение сервиса YouTube, чтобы я мог получить информацию об этом проекте, но не кубик. О, и я также включил эту библиотеку: http://code.google.com/p/guava-libraries, потому что до того, как я получил ошибку NoClassDefFound, и эта библиотека, похоже, решила ее. Заранее благодарю за помощь! О, и я также внимательно следил за каждым шагом (или, по крайней мере, так думаю) в gdata getting started guide. Моя тестовая сборка была успешной к концу ... Еще раз спасибо!

ответ

12

Добавление большего количества требуемых может также вызвать проблему. Ошибка java.lang.NoSuchMethodError обычно происходит в том случае, если время выполнения не может найти требуемый метод с точной подписью. Возможными причинами являются:

1) There might be mulitple jars with same code, which may cause wrong class get loaded. 

2) Incompatable version of jar, the jar you have in classpath might be older version/newer version. 

Удостоверьтесь, что ни одно из этих случаев не происходит.

+0

Спасибо за ваш ответ. Я все еще получаю ошибку. Я удалил все банки, которые, как мне казалось, не нужны, и удалили все импортные данные, которые не нужны, и получили ту же ошибку. Я обновил сообщение, чтобы понять, как выглядит код. – kentcdodds

+0

Проверьте эту ссылку, это кажется чем-то противоречащим библиотеке guava. http://code.google.com/p/gdata-java-client/issues/detail?id=344 – kosa

+0

Это моя проблема! Теперь мне просто нужно выяснить, что они имеют в виду с их решением ... Okris (в этой теме) говорит: _Solution, кстати, переключается на ImmutableSet.copyOf (E [] элементы) _, но я не уверен, что это значит, что я должен это делать. Не могли бы вы направить меня на этот шаг? Спасибо за вашу помощь! – kentcdodds

0

я не знаю, если его по-прежнему актуальна, но я имел такое же исключение

есть проблема с гуавы 11.02.jar (в настоящее время последняя версия)

при использовании гуавы-10.0.1 (можно найти here) все прошло хорошо.

+0

Спасибо, да, на это уже был дан ответ. Существует более новая версия, чем 9, которая также работает: http://code.google.com/p/guava-libraries/wiki/Release10 – kentcdodds

4

Проблемы с последней версией GData еще ссылками старых методов гуавы

Отъезд 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

Решение

я перешел на гуавы-r07.jar, расположенный в http://code.google.com/p/guava-libraries/downloads/detail?name=guava-r07.zip&can=4&q=

Это привело меня в прошлое ContactsService service = new ContactsS е р в ("");

Jar-й в использовании:

  • По умолчанию плагина Eclipse Jar в
  • GData основание 1.0.jar
  • GData-клиент-1.0.jar
  • GData-контакты-3.0.jar
  • gdata-core-1.0.jar
  • gdata-media-1.0.банку
  • гуавы-r07.jar

  • Apache (сервлет-api.jar)

  • JavaMail (mail.jar)
  • JavaBeans активации рамки (activation.jar)
+1

+1 Но обратите внимание, что эта проблема теперь исправлена ​​выпуском 1.47.0: http: //code.google.com/p/gdata-java-client/issues/detail?id=344#c13 –

0

Необходимые банки библиотеки следующие.

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 

Я использую вышеупомянутую библиотеку. Пожалуйста, используйте его; потому что конечная цель - получить объект YouTubeService. Ниже приведен фрагмент кода.

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

Если вы используете инструмент сборки, такие как Maven, то вы могли бы просто сделать что-то похожее на следующий пример из части секции зависимостей в моей 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> 
0

Я добавил googlecollection-exp.jar в мой путь сборки, после чего предыдущее исполнение исчезло.

+0

Вы имеете в виду ошибку NoSuchMethod? Возможно, вам захочется немного расшириться. Вы уверены, что у вас была стек, подобный той, что была у вас в вопросе? – rene

0

Обратите внимание на эту jar gdata-core-1.0.jar У меня такая же проблема, и я понял, что у меня проблема с этим jar gdata-core-1.0.jar, и я нашел с сайта тот же jar gdata-core -1.0.jar, но контент отличается. После того, как я заменил новый gdata-core-1.0.jar, проблема решена.

Так что сложно, что банка с тем же именем, но с их содержимым, не то же самое. вы думали, что у вас есть кувшин, на самом деле это неправильно

 Смежные вопросы

  • Нет связанных вопросов^_^