如何解决依赖包servlet-api和容器自带servlet的jar包的冲突

项目里要用到commons-logging。它有几个依赖,其中有一个是servlet-api-2.3.jar。现在我需要用到容器内的servlet-api的异步功能,编译的时候却总是自动引用默认的2.3版本。请问哪位有经验处理这样的冲突,可以屏蔽掉servlet-api-2.3.jar这个依赖包。

如果你的工程是用maven管理的话,可以在commons-logging的依赖里把servlet-api-2.3去除掉,再加入你所需要的版本的servlet-api依赖。大概的例子如下:
[code="xml"]

commons-logging
commons-logging
1.1.1


javax.servlet
servlet-api


    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>servlet-api-2.5</artifactId>
        <version>6.1.14</version>
        <scope>provided</scope>
    </dependency>

[/code]
指定scope为provided可以避免在发布的时候把servlet-api包拷到lib目录下。

把包删了? 或者换个别的版本的包!
还有就是看你JAVA 里面导包的时候具体 import的是哪个包!

Maven可以

不要把servlet-api-2.3.jar打包到最终war包或ear包里啊。

Eclipse里,可以配置的。

用mvn的pom文件里,将引入的servlet-api-2.3.jar的文件,通过在dependency哪里增加exclusions方式。例如:
[code="xml"]
com.xx.china.shared
xx.xx.xx
1.1-SNAPSHOT
jar


xx.xx.x
xx.xx.xx



[/code]

把Selvet-2.3的包删掉,直接导入容器的Selvet包,让commons-logging用容器的Selvet包

直接拷贝容器那个包替换掉servlet-api-2.3.jar

建立J2ee6标准的项目