2015-11-02 72 views
1
package beproject1; 
import twitter4j.FilterQuery; 
import twitter4j.Status; 
import twitter4j.StatusDeletionNotice; 
import twitter4j.StatusListener; 
import twitter4j.TwitterStream; 
import twitter4j.TwitterStreamFactory; 
import twitter4j.User; 
import twitter4j.conf.ConfigurationBuilder; 


public class Twitter { 

     public static void main(String[] args) 
     { 
      ConfigurationBuilder cb = new ConfigurationBuilder(); 
      cb.setDebugEnabled(true) 
      .setOAuthConsumerKey("ab") 
      .setOAuthConsumerSecret("cd") 
      .setOAuthAccessToken("ef") 
      .setOAuthAccessTokenSecret("gh") 
      ; 

      TwitterStream twitterStream = new TwitterStreamFactory(cb.build()).getInstance(); 

      StatusListener listener = new StatusListener() { 

       @Override 
       public void onException(Exception arg0) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onDeletionNotice(StatusDeletionNotice arg0) { 
        // TODO Auto-generated method stub 

       } 

       public void onScrubGeo(long arg0, long arg1) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onStatus(Status status) { 
        User user = status.getUser(); 

        // gets Username 
        String username = status.getUser().getScreenName(); 
        System.out.println(username); 
        String profileLocation = user.getLocation(); 
        System.out.println(profileLocation); 
        long tweetId = status.getId(); 
        System.out.println(tweetId); 
        String content = status.getText(); 
        System.out.println(content +"\n"); 

       } 

       @Override 
       public void onTrackLimitationNotice(int arg0) { 
        // TODO Auto-generated method stub 

       } 

      }; 
      FilterQuery fq = new FilterQuery(); 

      String keywords[] = {"ireland"}; 

      fq.track(keywords); 

      twitterStream.addListener(listener); // this line errors out 
      twitterStream.filter(fq); 

     } 
    } 

语句为twitterStream.addListener(listener)的行显示错误。 它说addListener未定义类型twitterStream。 谁能告诉我为什么? 我曾试过包括其他twitter4j罐子,但问题仍然存在,所有这些。Java Twitter4j addListener未针对类型twitterStream定义

+0

代码中的最后一行实际上并不是代码的一部分。我写它表明它是显示错误的行。 –

+0

你看到什么错误?在这里添加它可以帮助其他人协助。 – stef

回答

1

这是使用Twitter4J捕捉鸣叫在流的正确方法:

// Prepare configuration. 
    ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); 
    configurationBuilder.setOAuthConsumerKey(Config.TwitterConsumerKey); 
    configurationBuilder.setOAuthConsumerSecret(Config.TwitterConsumerSecret); 
    configurationBuilder.setOAuthAccessToken(Config.OAuthAccessToken); 
    configurationBuilder.setOAuthAccessTokenSecret(Config.OAuthAccessTokenSecret); 

    // Create the Twitter stream object. 
    twitterStream = new TwitterStreamFactory(configurationBuilder.build()).getInstance(); 
    twitterStream.addListener(new StreamListener()); 

    // Crawl. 
    FilterQuery filterQuery = new FilterQuery(); 
    filterQuery.follow([your_set_of_user_IDs]); 
    filterQuery.track([your_set_of_keywords]); 

    twitterStream.filter(filterQuery); 

注意StreamListener是实施StatusListener接口,您在其中定义时鸣叫被捕获做一个具体的类。