0

私は多目的にtwitter4jを使用してユーティリティクラスを作成しています。私はハッシュタグ、場所などに基づいてつぶやきを検索することができますが、ストリーミングAPIは私のために働いていません。Twitter4jストリーミングAPI呼び出しの例外クラスが見つかりません

私は、次のようにブログをたどった後にmainメソッドを使ってクラスを書いたが、クラスが見つかりませんerror.IはJavaに新しいです。

package mytweetapp; 

import twitter4j.FilterQuery; 
import twitter4j.StallWarning; 
import twitter4j.Status; 
import twitter4j.StatusDeletionNotice; 
import twitter4j.StatusListener; 
import twitter4j.TwitterException; 
import twitter4j.TwitterStream; 
import twitter4j.TwitterStreamFactory; 
import twitter4j.conf.ConfigurationBuilder; 

public class Stream { 
    public static void main(String[] args) throws TwitterException { 

ConfigurationBuilder cb = new ConfigurationBuilder(); 
cb.setDebugEnabled(true) 
     .setOAuthConsumerKey("*****") 
     .setOAuthConsumerSecret(
       "*******") 
     .setOAuthAccessToken(
       "*****") 
     .setOAuthAccessTokenSecret(
       "*****"); 

TwitterStreamFactory tf = new TwitterStreamFactory(cb.build()); 
TwitterStream twitter = tf.getInstance(); 

StatusListener listener = new StatusListener() { 

    public void onStatus(Status status) { 
     System.out 
       .println("@" + status.getUser().getScreenName() + " - " + status 
         .getText()); 
    } 

    public void onDeletionNotice(
      StatusDeletionNotice statusDeletionNotice) { 
     System.out 
       .println("Got a status deletion notice id:" + statusDeletionNotice 
         .getStatusId()); 
    } 

    public void onTrackLimitationNotice(int numberOfLimitedStatuses) { 
     System.out 
       .println("Got track limitation notice:" + numberOfLimitedStatuses); 
    } 

    public void onScrubGeo(long userId, long upToStatusId) { 
     System.out 
       .println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId); 
    } 

    public void onException(Exception ex) { 
     ex.printStackTrace(); 
    } 

    @Override 
    public void onStallWarning(StallWarning arg0) { 
     // TODO Auto-generated method stub 

    } 
}; 

FilterQuery fq = new FilterQuery(); 
String keywords[] = { "Mango", "Banana" }; 

fq.track(keywords); 

twitter.addListener(listener); 
twitter.filter(fq); 
} 

エラー

Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/internal/http/HttpClientWrapperConfiguration 
    at twitter4j.TwitterStreamFactory.<clinit>(TwitterStreamFactory.java:40) 
    at mytweetapp.Stream.main(Stream.java:23) 
Caused by: java.lang.ClassNotFoundException: twitter4j.internal.http.HttpClientWrapperConfiguration 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 2 more 
+0

IDE/mvn cliの中からこれを実行していますか? – Ivan

+0

@Ivanメインメソッドを呼び出すことでEclipse上でこのクラスを実行しています (このクラスを実行しています) twitter4j-core-4.0.4.jar twitter4j-stream-3.0.3.jarはjarのバージョンです あなたはこのクラスのクラスパスについてお尋ねしますか?私はこのすべてに新しいです – 2FaceMan

+0

あなたは全体をアップロードすることができます.jar、.project、.classpath、.java、およびその他のファイルを含むフォルダgithubを使って他の人がデバッグするのを簡単にします。 – Ivan

答えて

2

私の現在の仮説は、問題は、ストリーム3.0.3から異なるバージョンのコアとストリームジャーを混合(SO例えばTwitterStreamFactoryのHttpClientWrapperConfigurationが利用可能であることが期待されていることですあなたのクラスパス上にあるが、4.0.4ではこれは含まれていない。同じバージョンのものが含まれていることを試してください(そしてlibの1つのバージョンしかないので、stream-3とstream-4は一緒に含まれています)より多くの文脈のためにプロジェクト全体をどこかで共有してください。

Googleではどのクラスパスを使用しているか、たとえば読み上げることができます。ここをクリックWhat is a classpath?

+0

私はgithubを付けられなかったので、gDriveでプロジェクトをアップロードしました。 https://drive.google.com/file/d/0B0gxtpfo7Zs1dnk1QmZiZTUwY28/view?usp=sharing – 2FaceMan

+1

あなたが正しいです、瓶のバージョンが問題でした。ありがとう:) – 2FaceMan