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

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

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

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

  1. public class MybatisUtil {
  2. private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
  3. private static SqlSessionFactory sqlSessionFactory;
  4.  
  5. /**
  6. * 加载位于src/mybatis.xml配置文件
  7. */
  8. static {
  9. try {
  10. Reader reader = Resources.getResourceAsReader("mybatis.xml");
  11. sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
  12. } catch (IOException e) {
  13. e.printStackTrace();
  14. throw new RuntimeException(e);
  15. }
  16. }
  17.  
  18. /**
  19. * 禁止外界通过new方法创建
  20. */
  21. private MybatisUtil() {
  22. }
  23.  
  24. /**
  25. * 获取SqlSession
  26. */
  27. public static SqlSession getSqlSession() {
  28. //从当前线程中获取SqlSession对象
  29. SqlSession sqlSession = threadLocal.get();
  30. //如果SqlSession对象为空
  31. if (sqlSession == null) {
  32. //在SqlSessionFactory非空的情况下,获取SqlSession对象
  33. sqlSession = sqlSessionFactory.openSession();
  34. //将SqlSession对象与当前线程绑定在一起
  35. threadLocal.set(sqlSession);
  36. }
  37. //返回SqlSession对象
  38. return sqlSession;
  39. }
  40.  
  41. /**
  42. * 关闭SqlSession与当前线程分开
  43. */
  44. public static void closeSqlSession() {
  45. //从当前线程中获取SqlSession对象
  46. SqlSession sqlSession = threadLocal.get();
  47. //如果SqlSession对象非空
  48. if (sqlSession != null) {
  49. //关闭SqlSession对象
  50. sqlSession.close();
  51. //分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
  52. threadLocal.remove();
  53. }
  54. }
  55.  
  56. }

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

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

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

  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="com\liuya\demo\mybatis\dysnamic\mapper\NewsLabelMapper.xml"/>
  32. </mappers>
  33. </configuration>

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

java.lang.NoClassDefFoundError: Could not initialize class com解决方案的更多相关文章

  1. Java 上传文件到 SFTP 抛异常 java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.SunEC 的解决办法

    最近从 Op 那里报来一个问题,说是SFTP上传文件不成功.拿到的 Exception 如下: Caused by: java.lang.NoClassDefFoundError: Could not ...

  2. 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties

    参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> ...

  3. java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils

    页面报错: root: java.lang.NoClassDefFoundError: Could not initialize class net.sf.json.util.JSONUtils 出错 ...

  4. 异常-----java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.core.KeyFactory

    SSH 类库问题 java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer2009- ...

  5. hibernate 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.xxx 这类的问题

    <!-- 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.intern ...

  6. java.lang.NoClassDefFoundError: Could not initialize class xxx 原因

    一.问题及原因 程序里有个工具类,主要是调用它的静态方法来发送mq. 调用场景如下: 结果这两天报了个错: java.lang.NoClassDefFoundError: Could not init ...

  7. java.lang.NoClassDefFoundError: Could not initialize class org.jfree.chart.JFreeChart

    最近在进行利用jfreechart生成图表时发现,项目在本地运行的好好的,一部署到服务器(linux系统)上就不行,报这样的错误: java.lang.NoClassDefFoundError: Co ...

  8. exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment

      exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironmen ...

  9. 日志异常:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.StaticLoggerBinder

    今天启动开发的项目,碰到了一个日志上的bug:java.lang.NoClassDefFoundError: Could not initialize class org.slf4j.impl.Sta ...

随机推荐

  1. ROS HTB限速失败原因分析和需注意事项

    要想做限速,必须要知道以下几点: 首先要知道自己要限制什么的速度,谁的速度,于是需要用的标记,即Mangle. 其次要知道怎么限速,是限制上传,还是下载? 最后要知道所做的限速是否成功,即需要知道如何 ...

  2. mysql 优化 (1)

    提高IOPS能力的几种方法换SSD,PCIE-SSD(提高IO效率,普通SAS盘5000以内的iops,而新设备可达到数万或者数十万iops)少做IO的活(合并多次读写为一次,或者前端加内存CACHE ...

  3. 斗地主AI

    斗地主AI设计 一.牌型         1 火箭:大小王在一起的牌型,即双王牌,此牌型最大,什么牌型都可以打.         2 炸弹:相同点数的四张牌在一起的牌型,比如四条A.除火箭外,它可以打 ...

  4. git 怎么上传文件到github上

    1.安装git     sudo  apt-get install git 2.配置全局变量     git config --global user.name langhunm     git co ...

  5. HDU1257题解

    解题思路:这题的本质就是:求一个给定的数字序列中,非递增(或非递减)子序列的最少的条数. 思维误区:本题很容易被样例坑,以为是直接求跳跃点(i < j && ai < aj ...

  6. 【洛谷】P1064 金明的预算方案(dp)

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...

  7. 匿名方法,lambad表达式,匿名类

    其实lambad表达式就是“函数”或者说是“方法”写法的一个进化,越来越简化而已,如数学方法里的f(X). 匿名方法:顾名思义,匿名方法就是没有名称的方法,但是有定义参数. 匿名方法最明显的好处就是可 ...

  8. 一些Java相关的

    都是从<Thinking in Java>英文第四版中摘抄的 _______________________________________________________________ ...

  9. 在VritualBox中安装CentOS7

    系统:Windows10 位 详细步骤参考: Windows平台上通过VirtualBox安装centos虚拟机 安装virtual box 出现2503错误解决:c:/windows/temp 添加 ...

  10. dubbo 梗概及使用示例

    阿里巴巴dubbo主页:http://code.alibabatech.com/wiki/display/dubbo/Home-zh 1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提 ...