2013-11-10 89 views
0

我正在使用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/目錄中......沒有運氣。

回答

0

因此,如果其他人在GAE上有java.lang.NoClassDefFoundError問題,那麼值得檢查GAE是否支持您在代碼中導入的'whatevers'。我正在使用java.util.ResourceBundle作爲GAE不支持的東西或其他,但當然可以在使用Java JDK運行的本地機器上工作。

根本就沒有做過濾器或HttpRequests。誰知道呃?很高興我沒有浪費一天擺弄它,呵呵! Hummm?

+0

'java.lang.NoClassDefFoundError'是Java類庫中最具誤導性的throwables之一。如果它說「無法初始化類」,真正的問題是在名爲!的類的靜態初始化程序中拋出異常。重大的痛苦。這就是爲什麼有些人建議不要在靜態初始化器中做任何不平凡的事情。 –

+0

P.S.你應該接受你自己的答案,以便這個問題不會在問題列表中顯示爲未答覆。 –

相關問題