0

Java で Google App Engine (1.8.7) を使用して開発しています。web.xml ファイルに次のフィルターがあります...

<filter>
     <filter-name>MultiReadRequestFilter</filter-name>
    <filter-class>com.fitc.general.MultiReadRequestFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>MultiReadRequestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

For info フィルターは For info をラップします。ファイルは、リクエストをキャッシュすることによって HttpRequest への複数の読み取りを許可します。

 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
      /* wrap the request in order to read the inputstream multiple times
      MultiReadHttpServletRequest multiReadRequest = new MultiReadHttpServletRequest((HttpServletRequest) request);
     chain.doFilter(multiReadRequest, response);
 }

ともかく。開発サーバーではすべて問題なく動作しlocalhostますが、GAE にデプロイすると何かが壊れます。GAE ログに次のエラーが表示されます。

Error for /_ah/spi/BackendService.getApiConfigs java.lang.NoClassDefFoundError: 
Could not initialize class com.fitc.general.MultiReadHttpServletRequest at
    com.fitc.general.MultiReadRequestFilter.doFilter(MultiReadRequestFilter.java:23)
        at
    org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at
    com.googlecode.objectify.cache.AsyncCacheFilter.doFilter(AsyncCacheFilter.java:59)
    (...as so on!)

これを引き起こすために何が起こっているのか知っている人はいますか?他にもいくつかのフィルターがあり、展開すると正常に動作します。おそらくこれらがjarを使用していたのではないかと思ったので、MultiReadHttpServletRequestクラスのjarを作成し、ビルドパスとlib/ディレクトリに貼り付けました...運が悪いです。

4

1 に答える 1

0

したがって、他の誰かがjava.lang.NoClassDefFoundErrorGAE で問題を抱えている場合は、コードにインポートする「すべて」を GAE がサポートしていることを確認する価値があります。私はjava.util.ResourceBundleGAEでサポートされていない何かのために使用していました...しかし、もちろんJava JDKで実行されているローカルマシンで動作します。

したがって、フィルターや HttpRequests とはまったく関係ありません。誰が知っていましたか?いじって一日を無駄にしなくてよかった!うーん?

于 2013-11-10T08:01:59.330 に答える