当你们遇到抛出了NoClassDefFoundError异常的时候,给个个人参考

说说Java的一个坑,坑了我3小时waste my life

好的,首先说一下问题是解决了,但是我并没搞懂机制,希望有经验的大佬给个更正确的解决方案。

今天学到MySQL的工具类,然后我开始抽取其中的工具类,写了个自己的工具类,并配置了一个jdbc.properties的配置文件

贴个代码先

    /**
     * 文件的读取,只需要读取一次即可拿到这些值,使用静态代码块
     */
    static{
        // 读取资源文件,获取值
        try {
            // 1.创建Properties集合类
            Properties pro = new Properties();
            // 获取src路径下的文件的方式--->ClassLoader 类加载器
            // 2.加载配置文件
            pro.load(new FileReader(ClassLoader.getSystemResource("jdbc.properties").getPath()));
            // 3.获取属性,赋值
            url = pro.getProperty("Url");
            user = pro.getProperty("User");
            password = pro.getProperty("PassWord");
            driver = pro.getProperty("Driver");
            // 4.注册驱动
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

上面设置的是一些静态成员变量,下面是各个资源的释放。

好的,开始说问题,这个工具类写好了之后,第一次运行,OK,没报错。

可以给我返回MySQL里的数据,我创建了个自定义类存储这些数据。然后用ArrayList集合存储并打印输出这些数据。么得问题。

下面给出数据返回,


Emp{id=1012, ename='孙悟空', job_id=4, mgr=1004, joindate=2000-12-12, salary=8000.0, bonus=4000.0, dept_id=20}
Emp{id=1013, ename='林冲', job_id=3, mgr=1006, joindate=2001-02-12, salary=16000.0, bonus=3000.0, dept_id=30}
Emp{id=1014, ename='张三丰', job_id=4, mgr=1006, joindate=2001-12-22, salary=12500.0, bonus=5000.0, dept_id=10}
13

Process finished with exit code 0
一共13组,取了下面几组数据


这里没问题,接下来我要做另一个练习,我就去配置文件中修改了数据库的位置。

然后我写完代码开始运行程序之后,他给我抛了个这个异常

java.lang.NoClassDefFoundError: Could not initialize class 

这个异常第一次见,跟这个

ClassNotFoundException 

有点像,然后我拖着这个异常去百度,去bing,发现他们的错误太高端,我还看不懂。

看到了个教程是说是编译期找得到文件,但是运行期间文件找不到了,这就难到我了。

然后我就尝试了以下操作

1. 修改path

2. 重写jdbc.properties文件

3. 修改了类加载器(之前的类加载器不是上面那样写的,也是我在论坛看到的这样写的方式)

4. 各种删除,重写。

5. 重启服务器

6. 最后连重启大法都试了....

么得用,然后突然灵机一动,他说运行时找不到,我同包下,你总找的到把。我就把这个工具类直接不导包,直接拖入那个练习类的包里面。

然后就好了。。

对,就这样就好了。

好了,水了这么久做个总结

 

你自己写的工具类什么的,要是写完用的好好的,突然有一天崩了,就直接拖入需要运行的类的同包下,

最后,这是我的个人情况。如果你们没法解决,参考下这个就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值