zoukankan      html  css  js  c++  java
  • 解决Maven的jar包冲突问题

    1. 问题描述

     

      控制台说:无法将 com.zpx.servlet.MyServlet 识别为 javax.servlet.Servlet

     

    2. 问题原因

      Maven的一个核心功能就是一键构建,所以Maven将不再使用本地安装的Tomcat,而是使用Maven自身集成的Tomcat插件对项目进行构建。手动导入的 jar 包和本地安装的Tomcat中的 jar 包名字完全一样,却又是两个包,造成了 jar 包冲突异常。

     

    3. 解决方法

      Maven为 jar 包坐标提供了 <scope> 标签,指明了 jar 包的作用域,限制了 jar 包的使用范围,解决了 jar 包冲突。 

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
    <scope>provided</scope>
    </dependency>
    </dependencies>

     

    4. 要点补充

      Maven的 <scope> 标签有五个属性,他们的作用域分别是:

        compile:默认属性,对于 编译、测试、运行 三个状态都有效

        test:仅对 测试 状态有效(例如:junit)

        provided:仅对 编译和测试 状态有效(例如:servlet-api、jsp-api)

        runtime:仅对 测试和运行 装填有效(例如:JDBC)

        system:仅对 编译和测试 状态有效,但是需要显式提供本地 jar 包路径

  • 相关阅读:
    equals(),hashcode(),克隆学习心得
    AOP学习心得&jdk动态代理与cglib比较
    jackson注解使用心得
    rabbitmq使用心得
    web项目存数据到数据库,中文乱码,解决过程
    jdk动态代理学习
    团队作业——随堂小测(同学录)基本完工-紫仪
    alpha-咸鱼冲刺day3-紫仪
    alpha-咸鱼冲刺day2-紫仪
    alpha-咸鱼冲刺day1-紫仪
  • 原文地址:https://www.cnblogs.com/NyanKoSenSei/p/11425944.html
Copyright © 2011-2022 走看看