zoukankan      html  css  js  c++  java
  • NoClassDefFoundError: com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig处理

    根据老系统拷贝maven依赖新搭建了一个项目,启动抛异常如下:

    Caused by: java.lang.NoClassDefFoundError: com/ibatis/sqlmap/engine/transaction/external/ExternalTransactionConfig
        at org.springframework.orm.ibatis.SqlMapClientFactoryBean.<init>(SqlMapClientFactoryBean.java:103)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
        ... 56 more
        

    ExternalTransactionConfig是ibatis-sqlmap的类,难道包没有引入?

    查看项目依赖:

    没有问题

    查看当前model的依赖

    也没有问题

    分析:

    NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。

    我当前查看的依赖,在编译期间是没有问题的。可是已发布到tomcat就出错。

    maven执行clean install,然后查看生成的war包

    竟然木有ibatis-sqlmap包

    查看pom文件,发现了问题之所在

    知识拓展:

    在maven的依赖管理中,有两种方式可以对依赖关系进行撤销,分别是可选依赖(Optional Dependencies)以及依赖排除(Dependency Exclusions)。

    我们这里的optional标签就是可选依赖!

    Project-A --> Project-B。Project-A中依赖B时设置 <optional>true</optional>

    在编译项目A时,是可以正常通过的。如果有一个新的项目X依赖A,即:Project-X -> Project-A。此时项目X就不会依赖项目B了。

    如果项目X用到了涉及项目B的功能,那么就需要在pom.xml中重新配置对项目B的依赖。

    因此,去掉<optional>true</optional>进行强依赖!

    重新编译运行,搞定!

    结论:

    1、NoClassDefFoundError是运行时在Java的classpath路径中,对应的类不可用导致的错误

        参考:http://blog.csdn.net/jamesjxin/article/details/46606307

    2、maven可选依赖<optional>true</optional>和依赖范围scope一样,使用时请慎重

  • 相关阅读:
    Jquery 验证 validate
    JQuery的父、子、兄弟节点查找,节点的子节点循环
    i386、i586、i686、noarch、x86_64
    Java 遍历类中的属性
    页面的缓存与不缓存设置
    JavaScript 判断输入是否为中文的函数
    检查radio/checkbox是否至少选择一项
    JavaScript 检查是否是数字
    JavaScript 检查IP
    Javascript 身份证号获得出生日期、获得性别、检查身份证号码
  • 原文地址:https://www.cnblogs.com/huahua035/p/7000852.html
Copyright © 2011-2022 走看看