1

非常に奇妙な問題が発生しましたが、それを解決する方法が見つかりません。Jersey を使用して、GWT Web サイトからアクセスされる RESTfull サービスを提供するアプリを開発しています。サービスは、RestyGWT によって逆シリアル化される Json コンテンツを生成します。ポリモーフィック型をシリアル化するまでは、すべて正常に動作します。また、許可されていないユーザーに返される値を保護するために Shiro を使用しています。

シリアライゼーション プロセスは、Eclipse Indigo を使用して Mac OS X Lion で適切に実行され、Web サーバーとして Jetty が含まれています。Tomcat 6 を使用しても問題なく動作します。Linux (Ubuntu 12.04 ディストリビューション) を使用している場合、Tomcat 6 を使用するとアプリは正常に動作しますが、Ecplise に含まれている Jetty を Web サーバーとして使用すると、常に以下の例外がスローされます。

いくつかの投稿を読んで、各ライブラリを最新の安定バージョンに更新しようとしました。誰もこの問題を経験していますか?

よろしくお願いします。

java.lang.NoSuchFieldError: EXTERNAL_PROPERTY
    at org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector._findTypeResolver(JacksonAnnotationIntrospector.java:781)
    at org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector.findTypeResolver(JacksonAnnotationIntrospector.java:199)
    at org.codehaus.jackson.map.AnnotationIntrospector$Pair.findTypeResolver(AnnotationIntrospector.java:1032)
    at org.codehaus.jackson.map.ser.BasicSerializerFactory.createTypeSerializer(BasicSerializerFactory.java:200)
    at org.codehaus.jackson.map.ser.BasicSerializerFactory.buildContainerSerializer(BasicSerializerFactory.java:406)
    at org.codehaus.jackson.map.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:268)
    at org.codehaus.jackson.map.ser.StdSerializerProvider._createUntypedSerializer(StdSerializerProvider.java:782)
    at org.codehaus.jackson.map.ser.StdSerializerProvider._createAndCacheUntypedSerializer(StdSerializerProvider.java:735)
    at org.codehaus.jackson.map.ser.StdSerializerProvider.findValueSerializer(StdSerializerProvider.java:344)
    at org.codehaus.jackson.map.ser.StdSerializerProvider.findTypedValueSerializer(StdSerializerProvider.java:420)
    at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:601)
    at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:256)
    at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1613)
    at org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:558)
    at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1451)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1363)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1353)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:414)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
    at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
4

5 に答える 5

1

私の場合、クラスパスに restygwt ライブラリがあるために同じ例外が発生しました。

于 2012-06-25T14:37:59.753 に答える
1

RestGwt には、独自のソース ツリーに Jackson 注釈クラスが含まれています。これにより、Jackson 1.9 以降、Jackson ライブラリと RestyGwt の間でバージョンの競合が発生し、JsonTypeInfo クラスで As Enum の新しい列挙値が導入され (EXTERNAL_PROPERTY)、実行時に解決されるため、上記の例外が発生します。私の解決策は、1.7.1 バージョンの Jackson に戻ることでした。余談ですが、私の観点からすると、ソースコードを冗長に含めることは、依存関係を解決する方法ではありません。

于 2013-01-14T08:22:50.453 に答える
0

Check the version of your Jackson is 1.9 or bigger, because this enum was added in 1.9.

于 2012-05-21T12:55:41.483 に答える
0

簡単な回避策は、RestyGWT の依存関係から古い Jackson ライブラリを除外し、最新のものを確実に置き換えることです。

<dependency>
   <groupId>org.fusesource.restygwt</groupId>
   <artifactId>restygwt</artifactId>
   <version>1.3</version>
   <exclusions>
      <exclusion>
          <groupId>org.codehaus.jackson</groupId>
          <artifactId>*</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.9</version>
</dependency>
于 2014-03-19T18:19:35.397 に答える
0

最近、Jackson 1.9.7 と RestyGWT 1.3 を使用する GWT 2.4 アプリケーションで同じ問題を経験しました。

GWT アプリ用に 3 つの異なる Maven プロジェクトを生成するThomas Broyer のアーキタイプの1 つを使用しています。クライアントおよび共有プロジェクトに依存関係として含まれる RestyGWT があります。サーバー プロジェクトは共有プロジェクトに依存しているため、サーバー プロジェクトの RestyGWT に (推移的に受け取った) 依存関係がありました。したがって、それを機能させるために、サーバー プロジェクトで共有プロジェクトの依存関係を設定するときに、RestyGWT の依存関係を除外しました。

<dependency>
    <groupId>io.pst</groupId>
    <artifactId>accounts-ui-shared</artifactId>
    <exclusions>
       <exclusion>
           <groupId>org.fusesource.restygwt</groupId>
           <artifactId>restygwt</artifactId>
       </exclusion>
    </exclusions>
</dependency>
于 2013-01-18T11:25:44.957 に答える