Spring MVC配置引发奇怪的exception
我正在尝试部署一个新的Spring MVC应用程序,我已经完成了十几次,但现在我运行了一个非常奇怪的错误,甚至无法弄清楚发生了什么:
-
我的javaee-api与servlet-api冲突。 在控制台中它写道:
INFO: validateJarFile(E:\development\workspace\conference\src\main\webapp\WEB- INF\lib\javaee-api-6.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
嗯,是的,这是一个警告,但这个jar子没有加载,我需要它。 另外,我的应用程序库中没有servlet-api jar等。
-
此外,控制台抛出这样的exception:
SEVERE: Error configuring application listener of class com.sun.faces.config.ConfigureListener java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener
我的意思是,这个jar是指JSF和所有这些东西。 我根本不使用它,它应该在哪里尝试这样的课程? O_O
我在tomcat 7上运行应用程序
有什么想法发生了什么?
jar文件的问题是Tomcat的类加载器validation所有clases,它加载到JVM。 在你的情况下,它面临来自servlets API的一个类 – javax.servlet.Servlet
。 您的应用程序代码不得在WEB-INF/lib
包含此类。 这些类随servlet容器本身一起提供。 如果您使用maven,只需将javax.servlet:servlet-api
的范围更改为provided
。
修复此问题后,尝试重新加载整个应用程序,因为可能会发生类加载器完全阻止javaee-api-6.0.jar
,不允许从中加载任何其他类。
您可以通过设置其依赖项中provided
的作用域,从webapps的WEB-INF / lib目录中删除javaee-api-6.0.jar
文件。
Spec指的是Servlet容器(这里,Tomcat)将提供Java EE规范的实现类。 具有特定于应用程序的实现是spec / Tomcat不允许的稳定性和安全性问题。
谢谢!