zoukankan      html  css  js  c++  java
  • java.lang.NoClassDefFoundError: Could not initialize class com解决方案

    编写的时候遇到这样一个bug, java.lang.NoClassDefFoundError: Could not initialize class com

    纠结了两天多,但是,没有找到答案,这个问题的多方提示就是

    (1)缺JAR包 (2)JAR包冲突 (3)TOMCAT或Eclipse全路径中有空格

    这些答案都没有解决我的问题,这个错误提示是说我的那个包没法启动,很多显示都是是什么静态定义必须trycatch,但是我的这个自己简历的公共类,这些都写了.

    public class MybatisUtil {
        private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
        private static SqlSessionFactory sqlSessionFactory;
    
        /**
         * 加载位于src/mybatis.xml配置文件
         */
        static {
            try {
                Reader reader = Resources.getResourceAsReader("mybatis.xml");
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    
        /**
         * 禁止外界通过new方法创建
         */
        private MybatisUtil() {
        }
    
        /**
         * 获取SqlSession
         */
        public static SqlSession getSqlSession() {
            //从当前线程中获取SqlSession对象
            SqlSession sqlSession = threadLocal.get();
            //如果SqlSession对象为空
            if (sqlSession == null) {
                //在SqlSessionFactory非空的情况下,获取SqlSession对象
                sqlSession = sqlSessionFactory.openSession();
                //将SqlSession对象与当前线程绑定在一起
                threadLocal.set(sqlSession);
            }
            //返回SqlSession对象
            return sqlSession;
        }
    
        /**
         * 关闭SqlSession与当前线程分开
         */
        public static void closeSqlSession() {
            //从当前线程中获取SqlSession对象
            SqlSession sqlSession = threadLocal.get();
            //如果SqlSession对象非空
            if (sqlSession != null) {
                //关闭SqlSession对象
                sqlSession.close();
                //分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
                threadLocal.remove();
            }
        }
    
    }
    

    然后,我进行了另一个测试,连接测试

    public class TestConnection {
    
        @Test
        public void testConnection() throws Exception {
            Connection connection = MybatisUtil.getSqlSession().getConnection();
            System.out.println(connection!=null?"连接成功":"连接失败");
        }
    }
    

    发现是配置文件的错误,修改配置文件,连接就成功了,其他的就正确了

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 <configuration>
     5 
     6     <properties resource="jdbc.properties"/>
     7 
     8     <!-- 别名标签 -->
     9     <typeAliases>
    10         <typeAlias type="com.liuya.demo.mybatis.dysnamic.pojo.NewsLabel"
    11                    alias="NewsLabel"/>
    12     </typeAliases>
    13 
    14     <!-- 配置运行的数据库环境 -->
    15     <environments default="mysqlenvironment">
    16         <environment id="mysqlenvironment">
    17             <!-- 連接池在本地连接中使用,在SSM中不用,用C3P0和DBCP -->
    18             <transactionManager type="JDBC"/>
    19             <dataSource type="POOLED">
    20                 <property name="driver" value="${driver}"/>
    21                 <property name="url" value="${url}"/>
    22                 <property name="username" value="${username}"/>
    23                 <property name="password" value="${password}"/>
    24             </dataSource>
    25         </environment>
    26     </environments>
    27 
    28     <!-- 连接映射文件 -->
    29     <mappers>
    30         <!-- 最终使用的都是package -->
    31         <mapper resource="comliuyademomybatisdysnamicmapperNewsLabelMapper.xml"/>
    32     </mappers>
    33 </configuration>
    View Code

    所以要好好的理解Mybatis的框架和配置标签的使用,这是好使版本的配置

  • 相关阅读:
    统一Windows Azure和一般web应用之间的文件操作代码(转+译)
    Windows Azure真实案例Lokad 公司通过软件+服务高效提供先进的预测服务
    Windows Azure Marketplace入门教学利用TabLeau Public构建可视化DataMarket应用
    SQL Azure 一款强大的管理工具 Houston CTP 1(转+译)
    Windows Azure真实案例:Invensys Operations Management 公司使用Windows Azure AppFabric 实现动态节能的智能电网
    开始Azure之旅,参加深度培训 (转)
    Windows Azure Marketplace入门教学通过代码操作DataMarket数据源
    Windows Azure真实案例:Infosys Technologies 使用SQL Data Services(现为SQL Azure)为汽车经销商创建了基于云的方案
    Windows Azure Marketplace入门教学 DataMarket for Excel插件
    Windows Azure AppFabric Caching入门简介
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/6811937.html
Copyright © 2011-2022 走看看