• 概述

  Jar 包冲突是日常开发过程中,时常会遇到的问题。本文介绍由 jstl 的 Maven 依赖导致的 Jar 包冲突问题,以及对应的解决方法。

  • jstl 的 Maven 依赖配置
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

  一般来说,只要 pom 文件配置好了 Maven 依赖后,一般都不会有太大的问题。可是,就是这么一个简单的依赖,导致了整个项目都无法启动了,经过一段时间的排查,最终锁定了问题所在。

  Tomcat 类库

  jstl Maven 依赖导致的 Jar 包冲突

    项目编译后的类库

    jstl Maven 依赖导致的 Jar 包冲突

  从上面的2个截图可以看出,jsp-api 和 servlet-api 这2个 Jar 包重复了,通过进一步的排查,最终确认项目编译后的类库多出来的2个 Jar 是由于 jstl-api Jar 包的依赖,通过 Maven 编译到项目的类库中的,与 Tomcat 的类库中对应的2个 Jar 包起了冲突,找到问题的起因后,对 pom 文件做了调整,不编译 jstl-api Jar 包的依赖的 Jar 包即可解决问题,具体调整如下:

        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

 

 

 欢迎转载,转载必须标明出处 

 

相关文章:

  • 2021-07-12
  • 2022-01-06
  • 2022-12-23
  • 2021-05-11
  • 2022-12-23
  • 2021-09-06
  • 2021-12-16
  • 2021-08-07
猜你喜欢
  • 2021-12-20
  • 2021-04-22
  • 2021-11-27
  • 2022-12-23
  • 2022-12-23
  • 2021-08-15
  • 2021-10-28
相关资源
相似解决方案