djy3273
2011-03-07 13:12
浏览 1.3k
已采纳

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • changchanghust 2011-03-08 22:26
    已采纳

    如果你的工程是用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目录下。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • iteye_20676 2011-03-07 14:01

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

    评论
    解决 无用
    打赏 举报
  • rocketball 2011-03-08 11:31

    Maven可以

    评论
    解决 无用
    打赏 举报
  • iteye_7589 2011-03-08 11:53

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

    Eclipse里,可以配置的。

    评论
    解决 无用
    打赏 举报
  • iteye_6393 2011-03-08 13:20

    用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]

    评论
    解决 无用
    打赏 举报
  • redstarofsleep 2011-03-08 13:37

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

    评论
    解决 无用
    打赏 举报
  • wendangzhanghu 2011-03-08 15:19

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

    评论
    解决 无用
    打赏 举报
  • chresolute 2011-03-08 17:54

    建立J2ee6标准的项目

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题