Google App Engine:已部署版本中与过滤器相关的NoClassDefFoundError

时间:2013-11-10 04:28:06

标签: java google-app-engine

我正在使用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>

对于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!)

有谁知道导致这种情况可能会发生什么?我有几个其他过滤器,它们在部署时运行良好。我想知道是不是这些用过的罐子,所以我制作了一个我的MultiReadHttpServletRequest类的jar并将它粘贴在buildpath和lib/目录上......没有运气。

1 个答案:

答案 0 :(得分:0)

因此,如果其他人在GAE上遇到java.lang.NoClassDefFoundError问题,那么值得检查GAE是否支持您在代码中导入的'whatevers'。我正在使用java.util.ResourceBundle来获取GAE不支持的东西,但当然可以在使用Java JDK运行的本地机器上工作。

根本没有与过滤器或HttpRequests有关。谁知道呃?很高兴我没有浪费一天摆弄它吧! Hummm?