0

さまざまな方法で個別のクエリを実行しようとしています。以下のコードは実際のコードではなく、単なるエラーの例です。

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

両方のメソッドで呼び出されましたが、エラーが発生しました

IllegalStateException: このビルダーはもう使用できません。build() は既に呼び出されています

私がそれをグローバルにすると、同じエラーが発生します。これはおそらく私が愚かであるためですが、解決できません。

ここに私のコードがあります:

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 と Processing を使用していることについて言及するのを忘れていました

4

1 に答える 1

3

かなり明確に見えます: エラーは、build()は 1 回しか呼び出せないことを示しており、明らかに複数回呼び出そうとしています。したがって、簡単な解決策: 新しい TwitterFactory を作成するcb.build()場合は、最初に呼び出したときに変数の結果をキャプチャしてから再利用するか、作成するたびに新しいインスタンスを作成しConfigurationBuilderて build() を呼び出します。新しいTwitterFactory、それはかなり無駄に思えますが。最初のキャプチャを試みますcb.build()

于 2013-04-05T11:39:56.483 に答える