Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class xxx

使用java -cp xx.jar xxx类名 命令执行java程序报错:

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.guess.util.JdbcUtils

at com.guess.util.WordsUtils.truncateTable(WordsUtils.java:683)

at com.guess.DriverV2.main(DriverV2.java:54)

 

分析异常:在调用方法或者new创建实例时,java虚拟机或者类加载器试图载入类定义,但是找不到类定义;编译当前执行类时,类是存在,但是现在找不到了。

 

找到 Could not initialize class com.guess.util.JdbcUtils 这个类 ,查看其static代码块是类加载器加载mysql连接。考虑是没有mysql的连接jar包。

通过增加-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${extJarsPath} 来指定需要的额外jar包的路径,多个路径用冒号隔开。

注意:ava.ext.dirs 本身的值是${JAVA_HOME}/jre/lib/ext,自己新增的额外jar包的路径用冒号分隔开。

 

另外在Windows的cmd下执行,最好加上 -Dfile.encoding=utf-8 ,指定为utf8编码运行,否则写本地文件可能出现中文乱码问题。

 

完整命令:

java -Dfile.encoding=utf-8 -Djava.ext.dirs=${javaHome}/jre/lib/ext:${extJarsPath} -cp xxx.jar xxxx

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值