zoukankan      html  css  js  c++  java
  • maven项目启动、访问的两个问题

    maven项目启动、访问的两个问题

    一、依赖冲突问题

    项目可以正常启动,但是访问就报错:java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest" 这是一个依赖冲突问题。比如我出现这个问题是因为在pom.xml中导入了两个jar包,而这两个jar包是tomcat自带有的:

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    

    在tomcat下的lib目录里有这两个jar包:

    因为而导致自己导入的导入的jar包(在本地仓库或者中央仓库)和tomcat的 jar包冲突。要解决这个问题可以为导入的jar包添加作为范围,也就是添加一个< scope >标签,将导入的jar包作用范围缩小,scope的值可以为以下几个:

    1. compile:默认值,也就是不声明scope标签,表示被导入的jar包参与当前项目的编译、测试、运行、打包。这是一个作用比较强的依赖;
    2. test:表示被导入jar包仅仅是参与测试工作,比如Junit包;
    3. runtime:表示被导入jar包不参与编译、参与测试、运行;
    4. provided:表示被导入jar包参与项目的编译、测试、运行,但是不会被打包的时候包括进去,而是在别的地方有这些jar包

    二、maven web项目可以启动但是访问报错

    maven web项目可使用命令 tomcat:run 启动,但是访问的时候报错: org.apache.jasper.JasperException: Unable to compile class for JSP: , 这是因为命令 tomcat:run默认使用tomcat6,而tomcat6不支持jdk1.6之后的版本,要配置成tomcat7。在pom.xml中添加如下配置,表示使用tomcat7:

    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
    </plugin>
    
  • 相关阅读:
    如何插入和查找记录(行)(十一)
    如何查看数据表及数据表结构(十)
    如何创建数据表(九)
    MySQL常见的数据类型(八)
    MySQL数据库的常见操作(七)
    如何修改提示符(六)
    MySQL的登录和退出(五)
    如何启动和关闭MySQL?(四)
    如何配置MySQL?(三)
    如何安装MySQL?(二)
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10878106.html
Copyright © 2011-2022 走看看