0

有没有人通过 POJO 映射到 JSON 让 Jersey 在 Google AppEngine 工作?我现在已经花了几个小时来让这个工作,但我被困在两个地方。在 Jetty 本地运行我比在 AppEngine 更进了一步,但我还没有到那里。这是我遇到的两个问题:

本地

码头产生以下错误:

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.jarJersey 所依赖的 asm-4.0.jar 和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-bundle-1.17.jar
  • asm-3.3.1.jar
  • Jettison-1.1jar

我正在 Windows 8 上的 Eclipse Juno 中进行开发。

4

2 回答 2

1

您正在导入XmlRootElement注释但不使用它。你应该@XmlRootElement在你的班级之前添加。

至于第二个问题 - 你看过: java.lang.IncompatibleClassChangeError: Implementing class deploying to app engine吗?

于 2013-02-08T20:05:40.787 回答
0

本地的第一个问题是由于缺少 .jar 文件。我误读了Jersey 文档,并认为我只需要11.1 Core Server11.4.3 JSON章节中列出的文件:

  • 抛弃-1.1.jar
  • jersey-bundle-1.17.jar
  • asm-3.3.1.jar

原来我还需要在JAXB下列出的 jar :

  • 杰克逊核心 asl.jar
  • 杰克逊-映射器-asl.jar
  • 杰克逊-jaxrs.jar
  • 抛弃.jar
  • jaxb-impl.jar
  • jaxb-api.jar
  • 激活.jar
  • stax-api.jar

当在 Glassfish 中运行时,没有引用最后一个 jar 的设置有效,我被这个事实愚弄了,但这是因为 jar 与 Glassfish 捆绑在一起。码头不是这样。

于 2013-02-09T13:19:24.867 回答