嗨我是flickrj庫的新手。儘管有基礎的Java知識。
我正在處理的項目需要我對flickr進行身份驗證,然後將帶有地理標籤的圖像下載到本地硬盤上的文件夾中。該程序將是桌面應用程序。
我正在接近該計劃,分爲3個步驟。
1.要完成的身份驗證(我已成功)
2.嘗試下載用戶進行身份驗證時的所有照片。
3.試着改變一下代碼,以便它只下載地理標籤圖像。
java flickr和flickrj下載用戶圖片
我的問題是在第2步。我不能下載登錄的用戶圖像,更不用說帶有地理標記的用戶圖像。 我正在嘗試Daniel Cukier提供的驗證碼here
但是我遇到了問題。 我的netbeans僅僅在.getOriginalAsStream()部分的第77行刪除,錯誤爲「java.lang.RuntimeException:Uncompilable source code - Erroneous sym type:java.io.ByteArrayOutputStream.write」
從我的理解netbeans醒目意味着折舊,但不應該仍然有效?什麼把這個問題全部解決了?
我已經試過研究,基本上我不得不承認,它超出了我的能力來解決問題。如果任何人有任何想法我做錯了,我會很感激。
Ps:我不希望被勺子餵養,但請回答我白癡友好的方式,因爲我還是一名學生,我的Java不是最偉大的。
這段代碼是我到目前爲止所做的。
import com.aetrion.flickr.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import com.aetrion.flickr.auth.Auth;
import com.aetrion.flickr.auth.AuthInterface;
import com.aetrion.flickr.auth.Permission;
import com.aetrion.flickr.photos.Photo;
import com.aetrion.flickr.photos.PhotoList;
import com.aetrion.flickr.photos.PhotosInterface;
import com.aetrion.flickr.util.IOUtilities;
import java.io.*;
import java.util.Iterator;
import org.apache.commons.io.FileUtils;
public class authenticate {
Flickr f;
RequestContext requestContext;
String frob = "";
String token = "";
Properties properties = null;
public authenticate() throws ParserConfigurationException, IOException, SAXException {
InputStream in = null;
try {
in = getClass().getResourceAsStream("/setup.properties");
properties = new Properties();
properties.load(in);
} finally {
IOUtilities.close(in);
}
f = new Flickr(
properties.getProperty("apiKey"),
properties.getProperty("secret"),
new REST()
);
Flickr.debugStream = false;
requestContext = RequestContext.getRequestContext();
AuthInterface authInterface = f.getAuthInterface();
try {
frob = authInterface.getFrob();
} catch (FlickrException e) {
e.printStackTrace();
}
System.out.println("frob: " + frob);
URL url = authInterface.buildAuthenticationUrl(Permission.DELETE, frob);
System.out.println("Press return after you granted access at this URL:");
System.out.println(url.toExternalForm());
BufferedReader infile =
new BufferedReader (new InputStreamReader (System.in));
String line = infile.readLine();
try {
Auth auth = authInterface.getToken(frob);
System.out.println("Authentication success");
// This token can be used until the user revokes it.
System.out.println("Token: " + auth.getToken());
System.out.println("nsid: " + auth.getUser().getId());
System.out.println("Realname: " + auth.getUser().getRealName());
System.out.println("Username: " + auth.getUser().getUsername());
System.out.println("Permission: " + auth.getPermission().getType());
PhotoList list = f.getPhotosetsInterface().getPhotos("72157629794698308", 100, 1);
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Photo photo = (Photo) iterator.next();
File file = new File("/tmp/" + photo.getId() + ".jpg");
ByteArrayOutputStream b = new ByteArrayOutputStream();
b.write(photo.getOriginalAsStream());
FileUtils.writeByteArrayToFile(file, b.toByteArray());
}
} catch (FlickrException e) {
System.out.println("Authentication failed");
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
authenticate t = new authenticate();
} catch(Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}
請查看:http:// stackoverflow。com/questions/2333285/java-lang-runtimeexception-uncompilable-source-code-what-can-cause-this – nullpotent
我試過了所給的建議。它似乎沒有工作。我認爲這是代碼而不是IDE的問題。但感謝您的答案。 – user1406252
我已經回答了一個非常類似的問題,關於如何在這裏成功地設置一個經過身份驗證的flickrj api實例,我希望這有助於:http://stackoverflow.com/questions/3289552/how-to-access-private-photos-through- flickrj-API/15643638#15643638 –