昨天困扰很久的版本冲突问题-查看文章

昨天困扰很久的版本冲突问题

发表于:2017-07-02 09:06:05 分类:开发杂记 阅读:370次

昨天学习ssm项目实战,用的maven自动拉取jar包。

然后启动各种报错,说是servlet版本冲突,百度了许多,都说要手动去lib文件夹下删除一个jar,试了删除确实解决了。

然而,maven自动管理jar包不就可以防止程序员加入冲突的包么……

于是我清空了maven的pom配置里的jar包记录,也删除了lib下的所有jar,重新配置了,等待它自动拉取后,果然发现目录里有两个servlet核心包,一个2.3,一个自己引入的3.0.1。但是检查配置项,只有我引入了一个,就开始怀疑是哪个jar的依赖包。

自己测试了一下,velocity的jar引入时会拉取一堆依赖,里面就包含了2.3。

百度一下,遇到这样问题的人也蛮多,大部分都是让删除一个解决的。

同时也看到一篇靠谱的博文,说可以用配置的方式解决,看着配置又是一堆。又提供了一个方法,就是先配置servlet高版本的包,然后再配置可能依赖servlet的包,它在拉取时就会放弃低版本,不会导致冲突。

最后就用了后面这种方法解决了。


总结来说,ssm整合确实有许多奇葩问题。也许,感觉奇葩是因为自己还不是太了解。

关键词:ssm整合,jar冲突,java


验证码:

  1. author
    鲁有脚(伪装者) 2017-07-08 17:30:37
    关于servlet版本冲突,有个更方便的解决方法. 在冲突的servlet的pom包配置中,可以增加一行. <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope>这一行是告诉maven这个jar包不用加入到lib目录. </dependency>
  2. author
    焦木和尚(伪装者) 2017-07-05 20:08:17
    老哥稳
  3. author
    札木合(伪装者) 2017-07-05 20:07:01
    老哥稳