我正在編寫一個Java代碼,以便從mu應用程序上傳視頻到youtube。NoSuchMethodError與Java中的YouTube API
我的代碼是:
package com.youtube.video;
import java.io.IOException;
import java.net.URL;
import com.google.gdata.client.youtube.YouTubeService;
import com.google.gdata.data.media.mediarss.MediaCategory;
import com.google.gdata.data.media.mediarss.MediaDescription;
import com.google.gdata.data.media.mediarss.MediaKeywords;
import com.google.gdata.data.media.mediarss.MediaTitle;
import com.google.gdata.data.youtube.FormUploadToken;
import com.google.gdata.data.youtube.VideoEntry;
import com.google.gdata.data.youtube.YouTubeMediaGroup;
import com.google.gdata.data.youtube.YouTubeNamespace;
import com.google.gdata.util.AuthenticationException;
import com.google.gdata.util.ServiceException;
public class YouTubeController {
public static YouTubeService service;
public void init() {
if (service == null) {
service = new YouTubeService("[email protected]", "A...A");
String username = "[email protected]";
String password = "xxxxxxxxx";
try {
service.setUserCredentials(username, password);
} catch (AuthenticationException ae) {
ae.printStackTrace();
}
}
}
static String token;
static String formUrl;
public static void setFormDetails() throws IOException {
VideoEntry newEntry = new VideoEntry();
YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup();
String videoTitle = "this is a title";
mg.addCategory(new MediaCategory(YouTubeNamespace.CATEGORY_SCHEME, "Autos"));
mg.setTitle(new MediaTitle());
mg.setPrivate(false);
mg.setKeywords(new MediaKeywords());
mg.getKeywords().addKeyword("");
mg.getTitle().setPlainTextContent(videoTitle);
mg.setDescription(new MediaDescription());
mg.getDescription().setPlainTextContent(videoTitle);
URL uploadUrl = new URL("http://gdata.youtube.com/action/GetUploadToken");
try {
FormUploadToken fut = service.getFormUploadToken(uploadUrl, newEntry);
token = fut.getToken();
System.out.println(">>>>>"+token);
formUrl = fut.getUrl();
} catch (ServiceException se) {
se.printStackTrace();
}
}
public static void main(String s[]) throws IOException {
YouTubeController yc = new YouTubeController();
yc.init();
yc.setFormDetails();
}
}
我在lib文件夾下面的罐子:
GDATA,客戶1.0.jar GDATA-的YouTube-2.0.jar GDATA,芯 - 1.0.jar GDATA媒體-1.0.jar 谷歌 - 收集 - 1.0.jar 番石榴13.0.1.jar 的mail.jar 的activation.jar
但在運行這段代碼,這是給我下面的錯誤:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf([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 com.zeta.video.YouTubeController.init(YouTubeController.java:23)
at com.zeta.video.YouTubeController.main(YouTubeController.java:66)
我嘗試了網上,所有的解決方案,和他們都指出,這個錯誤是因爲我錯過了一些JAR文件。但我擁有所有的JAR。有人可以幫我解決這個問題嗎?
你是如何建立這個項目的? – BeRecursive
我不明白你的意思嗎? – Rajkumar
你用什麼來構建這段代碼? – BeRecursive