0

JSON への POJO マッピングを使用して、Jersey を Google AppEngine で動作させた人はいますか? これを機能させるために数時間を費やしてきましたが、2 つの場所で立ち往生しています。Jetty でローカルに実行することで、AppEngine よりも一歩先を行くことができますが、まだそこにも到達していません。私が遭遇している2つの問題は次のとおりです。

ローカル:

Jetty は次のエラーを生成します。

SEVERE: A message body writer for Java class
nilsnett.chinese.backend.BusinessObject, and Java type class
nilsnett.chinese.backend.BusinessObject, and MIME media type
application/json was not found

nilsnett.chinese.backend.BusinessObjectは、私が作成したプレーンな Java クラスで、次のようになります。

package nilsnett.chinese.backend;
import javax.xml.bind.annotation.XmlRootElement;
public class BusinessObject {
    public String text;
    public int value;
}

ここで何が問題なのですか?

AppEngine で:

Uncaught exception from servlet java.lang.IncompatibleClassChangeError

asm-3.3.1.jarローカルでもこの​​エラーが発生しました。これは、Jersey が依存する とasm-4.0.jar, which AppEngine depends on. If I _only_ referencedasm-4.0.jar` の両方をローカルで参照しているという事実に関連しています。ここで同じエラーが発生します。両方を参照することは、AppEngine では明らかにうまく機能しません。どうすればこれを回避できますか?

より多くのデータ:

SDK の参照:

  • AppEngine v1.7.4
  • Java SE 1.6

参照されているJerseyに関連するJar:

  • Jersey-bundle-1.17.jar
  • Asm-3.3.1.jar
  • Jettison-1.1jar

Windows 8 の Eclipse Juno で開発しています。

4

2 に答える 2

0

ローカルでの最初の問題は、.jar ファイルの欠落が原因でした。私はジャージーのドキュメントを読み違え、章11.1 Core Server11.4.3 JSONにリストされているファイルだけが必要だと思っていました:

  • jettison-1.1.jar
  • jersey-bundle-1.17.jar
  • asm-3.3.1.jar

JAXBの下にリストされている jar も必要であることがわかりました。

  • jackson-core-asl.jar
  • jackson-mapper-asl.jar
  • jackson-jaxrs.jar
  • jettison.jar
  • jaxb-impl.jar
  • jaxb-api.jar
  • アクティベーション.jar
  • stax-api.jar

Glassfish での実行時に、最後の jar が参照されていないセットアップが機能したという事実にだまされましたが、それは jar が Glassfish にバンドルされているためです。Jetty ではそうではありません。

于 2013-02-09T13:19:24.867 に答える