0

나는 다목적으로 twitter4j를 사용하여 유틸리티 클래스를 작성하고 있습니다. 해시 태그, 위치 등을 기반으로 트윗을 검색 할 수 있지만 스트리밍 API가 작동하지 않습니다.Twitter4j 스트리밍 API 호출 던집니다 클래스를 찾을 수 없습니다 예외

블로그를 다음과 같이 수행 한 후에 main 메소드를 사용하여 클래스를 작성했지만 클래스를 찾을 수 없습니다. 오류가 발생했습니다. 자바를 처음 사용합니다.

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 이클립스에서 메인 클래스를 호출하여이 클래스를 실행하고있다 (). twitter4j-core-4.0.4.jar twitter4j-stream-3.0.3.jar도 병 버전 이 클래스에 대해 어떤 클래스 경로를 요구하고 있습니까?이 모든 것을 처음 접했습니다. – 2FaceMan

+0

전체를 업로드 할 수 있습니다. .jar, .project, .classpath, .java 및 기타 파일을 가진 폴더 github을 사용하면 다른 사람들이 쉽게 디버깅 할 수 있습니다. – Ivan

답변

2

나의 현재 가설은 문제가 있기 때문에 스트림-3.0.3에서 그렇게 (예 TwitterStreamFactory를 다른 버전의 코어와 스트림 항아리를 혼합의 HttpClientWrapperConfiguration 사용할 수 기대 때문이다 클래스 경로에 있지만 4.0.4에서는 더 이상 포함되지 않습니다. 동일한 버전의 라이브러리를 포함 시키십시오 (그리고 lib의 한 버전 만 있으므로 함께 포함되는 stream-3과 stream-4는 no-no입니다). 작동하지 않습니다 - 전체 프로젝트를 어딘가에 공유하여 더 많은 맥락을 파악하십시오.

Google은 어떤 클래스 경로를 사용하고 있는지 또는 예를 들어 읽을 수 있습니다. 여기 What is a classpath?

+0

github을 장착 할 수 없어서 gDrive에서 프로젝트를 업로드했습니다. https://drive.google.com/file/d/0B0gxtpfo7Zs1dnk1QmZiZTUwY28/view?usp=sharing – 2FaceMan

+1

맞습니다. 병 버전이 문제였습니다. 감사 :) – 2FaceMan