2012-09-06 81 views
0

我正在運行一個相對簡單的註解驅動Spring配置的Web應用程序。我使用的是Java 1.6,Tomcat 7,並且我相信我的pom.xml中有相應的依賴關係,即jsp-api:2.2,javax.servlet-api:3.0.1。儘管我的webapp在運行時似乎沒有任何問題,但我仍然不斷得到下面的錯誤。我在網上發現了一個對這個錯誤的引用,並且建議在我的web.xml文件中添加'metadata-complete =「true」',這使@HandleTypes錯誤消失,但阻止我的應用程序正確構建自身。Spring,Tomcat @HandleTypes註解錯誤

任何建議/幫助將不勝感激。 謝謝!

2012年9月5日下午1時29分52秒org.apache.catalina.startup.ContextConfig checkHandlesTypes
警告:無法加載類[javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects]對證一個或多個ServletContentInitializers的@HandlesTypes註釋。

拋出java.lang.ClassNotFoundException:javax.servlet.jsp.el.ImplicitObjectELResolver $ ImplicitObjects 在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688) 在org.apache.catalina.loader .WebappClassLoader.loadClass(WebappClassLoader.java:1533) at org.apache.catalina.startup.ContextConfig.checkHandlesTypes(ContextConfig.java:1988) at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:1951 ) 在org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1840) 在org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1808) 在org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1794) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1214) at org.apache.catalina.startup.ContextConfig。 configureStart(ContextConfig.java:828) 在org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:302) 在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 在org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5148) at org.apache.catalina.util.LifecycleBase。啓動(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(Con (org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615) at org。org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:842) (attainerBase.java:866) apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:958) at org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1599) at java.util.concurrent.Exccutors $ RunnableAdapter。調用(Executors.java:441) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java。 util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) 在java.lang.Thread.run(Thread.java:662)

+1

請確保'jsp-api:2.2'和'javax.servlet-api:3.0.1'具有'提供的'。 – axtavt

+0

這正是需要的。你想正式回答,我會將其標記爲正確的? – Queso

+0

以答案形式發佈。 – axtavt

回答

2

你應該確保你的war文件不包含Servlet API的和JSP API jar S,否則你會變得棘手問題的類加載。

但是,您仍然需要它們作爲編譯時的依賴關係。對於這種情況,Maven允許你用範圍provided聲明這些依賴關係。

因此,請確保jsp-api:2.2javax.servlet-api:3.0.1<scope>provided</scope>

+0

如果萬一不是maven構建什麼解決方案? –