关于maven依赖中的provided使用

http://www.cnblogs.com/tiramisuyj/p/4811782.html

今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖


            javax.servlet
            servlet-api
            3.0-alpha-1
        

通过插件启动tomcat的时候,报错,里面有一段是这样的:

复制代码

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

复制代码

产生的原因是:tomcat中也有servlet-api包,这样,发生了冲突

解决方法:添加provided,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了,完整依赖如下:

复制代码


            javax.servlet
            servlet-api
            3.0-alpha-1
            provided
        

复制代码

你可能感兴趣的:(关于maven依赖中的provided使用)