搭建ssm框架使用tomcat7插件中遇到的问题合集

记录用tomcat7插件部署时遇到的一些错误

  • 1.Maven打包web项目报错Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if

    • 原因分析:maven的web项目默认的webroot是在src\main\webapp。如果在此目录下找不到web.xml就抛出以上的异常
    • 解决方法1(试过):应该在src/main 下面 创建webapp,同时要注意webapp是否有蓝色的点,如果没有蓝色的点,那么在pom.xml文件中看看packaging标签的值是不是war.
    • 解决方法2(没有试过):需要在pom.xml中增加配置,如下:
    <build>    
    <finalName>simple-webapp</finalName>    
    <plugins>    
        <plugin>    
            <groupId>org.apache.maven.plugins</groupId>    
            <artifactId>maven-war-plugin</artifactId>    
            <version>2.1.1</version>    
            <configuration>    
        
                  <webXml>WebContent\WEB-INF\web.xml</webXml>            
        
            </configuration>    
        </plugin>    
    </plugins>    
     </build>   
    
  • 2.lombok使用时出现问题,报错如下:
    Unable to process Jar entry [module-info.class] from Jar [jar:file:/xxxxxxxx/lombok-1.18.4.jar!/] for annotations
    org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

    • 原因分析:从lombok-1.16.20开始打包中存在一个叫module-info.class的文件,一些版本的tomcat启动时,如果classpath下有这个包就会报上面的错误
    • 解决方法1(试了可行):maven中将lombok的scope设为provider;——有效,lombok为注解增强编译,运行时不需要
    • 解决方法2(没有试过):对方系统tomcat版本为7.0.61,本地换用tomcat 8.0.53;——有效,未发现异常
  • 3.报错信息:Failed to start component [StandardEngine[Tomcat].StandardHost[localhost]

    • 原因分析:当依赖的scope为provided的时候,在编译和测试的时候有效,在执行(mvn package)进行打包成war包的时候不会加入,比如:servlet-api,因为servlet-api,tomcat等web服务器中已经存在,如果在打包进去,那么包之间就会冲突
    • 解决方法:将servlet-api,jsp-api,jstl的scope设为了provided,
  • 4 报错信息:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
    -解决办法:网上查了很多,都说把jstl导入就可以,但是我本来就已经导入却依然报错,后面把另外两个依赖导入后就神奇的好了.

      <!-- jstl -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- jstl-api -->
        <dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- jstl-impl -->
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <version>1.2</version>
        </dependency>
    
  • 5.java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList的问题

    • 原因分析: 这是因为springmvc默认是没有对象转换成json的转换器的,需要手动添加jackson依赖。
    • 解决方法:在spring-mvc.xml文件中加入如下配置
    <mvc:message-converters register-defaults="true">
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
          <property name="supportedMediaTypes" value="application/json"/>
          <property name="features">
            <list>
              <value>WriteMapNullValue</value>
              <value>WriteDateUseDateFormat</value>
            </list>
          </property>
        </bean>
      </mvc:message-converters>
    
  • 6.从mysql数据库换成mariadb需要做以下几件事

    1.修改pom依赖

    • 在pom里面mysql的配置为
         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
    
    • 在pom里面mariadb的配置为
          <!-- https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client -->
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>2.6.0</version>
        </dependency>
    

    2.修改db文件为mariadb的

      jdbc.driver=org.mariadb.jdbc.Driver
      jdbc.url=jdbc:mariadb://xxx:3306/mybatis
      jdbc.username=root
      jdbc.password=xxx
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值