zoukankan      html  css  js  c++  java
  • MyBatis3错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决

    在使用Maven新建QuitStart类型项目时,引入了MyBatis3.2.0版本的JAR包之后,出现如下错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Priority
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:176)
        at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:87)
        at org.apache.ibatis.io.Resources.classForName(Resources.java:254)
        at org.apache.ibatis.type.TypeAliasRegistry.registerAlias(TypeAliasRegistry.java:153)
        at org.apache.ibatis.session.Configuration.<init>(Configuration.java:173)
        at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:76)
        at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:60)
        at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:48)
        at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:35)
        at com.jsoft.testmybatis.test1.App.<clinit>(App.java:20)
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Priority
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 12 more

    这个错误的意思是没有引入log4j的JAR包,解决方法是加入log4j的JAR包依赖,POM配置如下:

            <!-- log4j -->
            <!-- https://mvnrepository.com/artifact/log4j/log4j -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>

    加入之后,再配置log4j的配置文件,这里命名为:log4j.properties,放在resources文件夹下,配置如下:

    log4j.rootLogger=DEBUG,Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.org.apache=INFO
    #ex:http://www.cnblogs.com/zhaozihan/p/6371133.html

    只要配置好之后再次运行就不会报如上的错误。

    但是,思考一下,为什么一定要引入log4j,而且log4j的版本停留在了1.x的版本,如果项目上使用的是2.x版本的,那么这就是一个问题,难道要引入两个去解决这个问题?

    尝试以下解决方法:

    1、尝试升级MyBatis的版本为3.4.4,不引入log4j。测试之后一切正常,所以此方法是行得通的。

    2、升级了3.4.4版本之后,可以通过setting节点指定使用哪个日志组件,这样也能完美解决框架上使用不同版本的日志组件导致的问题。配置参考:http://www.mybatis.org/mybatis-3/zh/configuration.html#settings

  • 相关阅读:
    C++ 动态多维数组的申请与释放
    OpenCV视频的读写
    Python 函数的参数传递
    Python 赋值、浅拷贝和深拷贝
    操作系统学习笔记(七) 死锁
    操作系统学习笔记(六) 文件系统
    浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
    heap与stack的区别
    深入学习golang中new与make区别
    Linux CentOS 7 安装confluence 5.8.10
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7050312.html
Copyright © 2011-2022 走看看