プロが教えるわが家の防犯対策術!

現在Google App Engineにてtwitter4jのAPIを使用してtwitterのトレンドを取得して表示するjspの画面作成をやっています。
そこで以下のエラーが取れずに、サーバーエラーとなるため困っています。

◆エラー内容
-------------------------------------------------------------
java.lang.IncompatibleClassChangeError: Expected static method twitter4j.http.BASE64Encoder.encode([B)Ljava/lang/String;
at twitter4j.http.BasicAuthorization.encodeBasicAuthenticationString(BasicAuthorization.java:59)
at twitter4j.http.BasicAuthorization.<init>(BasicAuthorization.java:50)
at twitter4j.TwitterFactory.getInstance(TwitterFactory.java:87)
at com.twitter.Turuter.getTwitterTrends(TestTwitter.java:110)
at org.apache.jsp.test_jsp._jspService(test_jsp.java:72)
・・・
-------------------------------------------------------------

◆TestTwitter.java:110
-------------------------------------------------------------
public List<String> getTwitterTrends(){

boolean isExcludeHashTags = true;

TwitterFactory tf = new TwitterFactory();
Twitter twitter = tf.getInstance(id, pwd); 【Line:110】
-------------------------------------------------------------

環境は以下の通りです。
Eclipse:3.4.2
JDK:1.6.0_20
AppEngine SDK:1.3.3.1
GWT SDK:2.0.3
twitter4j:2.1.3

「java.lang.IncompatibleClassChangeError」はコンパイラのバージョンが異なるメソッドの呼び出しなどで出てしまう様ですが、twitter4jのMANIFESTでは「Build-Jdk: 1.6.0_17」と書かれています。SDKのバージョンは上記環境のバージョンと「1.6.0_20」を試しましたが、どちらも同様のエラーでした。

どなたか解決方法をご教授頂けないでしょうか。よろしくお願いします。

A 回答 (1件)

twitter4j.http.BASE64Encoderというクラスはどこにあるのかなぁ?


2.1.3でなく、安定版の2.1.2を使ってみたら?
あるいは、twitter4jのフォーラムやMLなどで質問してみるとか。
(Twitter APIなんて、私の日常にはない世界なので、抽象的にしかお答えできません。)

この回答への補足

回答ありがとうございます。

twitter4j.http.BASE64Encoderクラスは
twitter4j.internal.http.BASE64Encoderにあるようです
internalってのを挟んでるのでのが分からないのですが。

twitter4jのバージョンは2.1.2と2.1.0も使ってみました。
2.1.2では同様のエラーが発生しました。
2.1.0は「java.lang.NoSuchMethodError: twitter4j.TwitterFactory.getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;」となりました。

もう少しこちらでどなたか回答頂けないか待ってみることにします。
それでも解決しない場合にはそちらを利用してみようと思います。

補足日時:2010/05/24 22:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!