maven 版本: apache-maven-3.3.9
报错信息如图 (图片解决方案来源博客: java.lang.LinkageError: loader constraint violation 问题的解决办法)
解决方法
如果发生以上问题; 基本上不出意外是
- <dependency>
- <groupId>
- org.apache.tomcat
- </groupId>
- <artifactId>
- tomcat-catalina
- </artifactId>
- <version>
- 9.0.11
- </version>
- <scope>
- provided
- </scope>
- </dependency>
tomcat 的依赖范围出现了问题 在下面加上 scope 基本上会解决此类问题 如果 加上之后还出现 空指针的异常 在 jsp 下面 加上 scope 范围就会解决;
解决这类问题的基本方法如下:
解决办法, 在 pom.xml 中, 找到 servlet-API 的配置 , 修改为如下
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-API</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
maven 依赖中, scope 域的几种范围
1,test 指的是测试范围有效, 在编译和打包时都不会使用这个依赖
2,compile 范围指的是编译范围有效, 在编译和打包时都会将依赖存储进去, 默认使用的是 compile
3,provided 依赖: 在编译和测试的过程有效, 最后生成 war 包时不会加入, 诸如: servlet-API, 因为 servlet-API,tomcat 等 web 服务器已经存在了, 如果再打包会冲突
4,runtime 在运行的时候依赖, 在编译的时候不依赖
5,system, 类似 provided, 需要显式提供包含依赖的 jar,Maven 不会在 Repository 中查找它.
来源: http://www.bubuko.com/infodetail-2846964.html