2013-04-05 58 views
0

我試圖以執行不同的方法單獨的查詢,下面的代碼是不是我的實際代碼,但僅僅是錯誤的一個例子,我有多個查詢

Twitter twitter = new TwitterFactory(cb.build()).getInstance();

稱爲在這兩種方法,但是我得到的錯誤

IllegalStateException異常:不能再使用這個生成器,建立()已經被調用

如果我使它成爲全球性的,那麼我得到相同的錯誤, 這可能只是我愚蠢,但我無法解決它,iv現在盯着它太久了。

這裏是我的代碼:

ConfigurationBuilder cb = new ConfigurationBuilder(); 

    double lat = 51.5171; 
    double lon = 0.1062; 
    double res = 37; 
    String resUnit = "mi"; 

public void setup(){ 

cb.setOAuthConsumerKey("XXXXXXXXXXXXXXXXXXXXXx"); 
cb.setOAuthConsumerSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); 
cb.setOAuthAccessToken("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); 
cb.setOAuthAccessTokenSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXX"); 

    queryLon(); 
    queryBir(); 
} 

void queryLon(){ 
try { 
Twitter twitter = new TwitterFactory(cb.build()).getInstance(); 

    for (int j = 0; j < 5; j++) { 

    Query query = new Query(); 
    query.setRpp(100); 

    QueryResult result = twitter.search(new Query().geoCode(new GeoLocation(lat,lon), res, resUnit)); 
    ArrayList tweets = (ArrayList) result.getTweets(); 


    for (int i = 0; i < tweets.size(); i++) { 

    Tweet t = (Tweet) tweets.get(i); 
//User u= twitter.showUser("twitter"); 

String location = t.getLocation(); 
println("Location: " + location); 

    } 
} 
} 

catch (TwitterException te) { 
println("Couldn't connect: " + te); 
}; 

} 

void queryBir(){ 
try { 

Twitter twitter = new TwitterFactory(cb.build()).getInstance(); 

    for (int j = 0; j < 5; j++) { 

    Query query = new Query(); 
    query.setRpp(100); 

    QueryResult result = twitter.search(new Query().geoCode(new GeoLocation(lat,lon), res, resUnit)); 
    ArrayList tweets = (ArrayList) result.getTweets(); 


    for (int i = 0; i < tweets.size(); i++) { 

    Tweet t = (Tweet) tweets.get(i); 

String location = t.getLocation(); 
println("Location: " + location); 



    } 
} 
} 

catch (TwitterException te) { 
println("Couldn't connect: " + te); 
}; 

} 

任何幫助,將不勝感激,乾杯。

忘了,更不用說使用Twitter4j和處理

回答

3

小艾明確IM:錯誤告訴我們,build()只能叫一次,你顯然試圖把它稱爲多次。因此,簡單的解決方案:當您想創建一個新的TwitterFactory時,首次調用它時將變量cb.build()的結果捕獲到變量中,然後重新使用該變量,或者創建ConfigurationBuilder的新實例並調用它的build()everty time你創建一個新的TwitterFactory,雖然這看起來很浪費。嘗試首先捕獲你的cb.build()

+0

歡呼的人,謝謝指出,我應該已經這樣做了,但睡眠不足和太多咖啡因的組合已經阻礙了我思考的能力。 – 2013-04-05 11:47:50

+0

我覺得自己像個白癡 – 2013-04-05 11:49:42

+0

我們都去過那裏。 – 2013-04-05 11:51:31