2013-04-05 59 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