Java 不能初始化类,java.lang.NoClassDefFoundError:无法初始化类XXX

就在几天前,我遇到了和你一样的问题。 所有的代码在我的本地机器上运行良好,但是却发现错误(noclassdeffound&initialize)。 所以我张贴我的解决scheme,但我不知道为什么,我只是提出一个可能性。 我希望有人知道会解释这个。@ John Vint首先,我会告诉你我的问题。 我的代码有静态variables和静态块都。 当我第一次遇到这个问题时,我尝试了John Vint的解决scheme,并尝试去捕捉exception。 但是,我什么也没抓到。 所以我认为这是因为静态variables(但现在我知道它们是相同的东西),仍然没有发现。 所以,我试图findLinux机器和我的电脑之间的区别。 然后我发现这个问题只有在多个线程在一个进程中运行的时候才会发生(顺便说一句,linux机器有双核和双进程)。 这意味着如果有两个任务(两个都使用具有静态块或variables的代码)在同一个进程中运行,则会出错,但是如果它们运行在不同的进程中,则两者都可以。 在Linux机器上,我使用

mvn -U clean test -Dtest=path

运行一个任务,并且因为我的静态variables是启动一个容器(或者你可能初始化一个新的类加载器),所以它将一直保持到jvm停止,并且只有当一个进程中的所有任务停止时,jvm才会停止。 每个任务将启动一个新的容器(或类加载器),这使得混乱的jvm。 结果,错误发生了。 那么,如何解决呢? 我的解决scheme是添加一个新的命令到maven命令,并使每个任务到同一个容器。

-Dxxx.version=xxxxx #sorry can't post more

也许你已经解决了这个问题,但是仍然希望能够帮助那些遇到同样问题的人。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值