我正在使用Java中的Google App Engine(1.8.7)進行開發。我在我的web.xml文件以下過濾器...Google App Engine:部署版本中與過濾器相關的NoClassDefFoundError
<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的文件允許多重讀取到的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
類的罐子,並將其卡在buildpath和lib/
目錄中......沒有運氣。
'java.lang.NoClassDefFoundError'是Java類庫中最具誤導性的throwables之一。如果它說「無法初始化類」,真正的問題是在名爲!的類的靜態初始化程序中拋出異常。重大的痛苦。這就是爲什麼有些人建議不要在靜態初始化器中做任何不平凡的事情。 –
P.S.你應該接受你自己的答案,以便這個問題不會在問題列表中顯示爲未答覆。 –