今天想着把之前做的一个普通java项目转变成maven项目于是根据网上的步骤对项目右击选中Add Framework Support
果不其然瞬间变成了maven项目,而在变成maven项目后,我将原项目的lib文件夹下的jar包一一导入成pom.xml的依赖,最后将lib文件删除,reload一下,感觉很良好(bushi。当我大喜于idea的便捷操作时问题来了,项目基本上无法运行了而且均报错NoClassDefFoundError: Could not initialize xxx
在网上查询后发现是因为JVM在加载类的时候,会初始化类里的静态变量,或执行静态块,如果这个时候抛出了异常,该类就会加载失败,那么以后任何使用到这个类的地方,都会抛出NoClassDefFoundError异常。而类加载过程出错的原因正是因为classpath上没有找到类加载需要的jar包。
回忆先前的操作,我将作为library的lib删除了,但是点开Project Structure 选择libraries 发现这里选中的依旧是lib文件下的jar包,所以程序只会自动的去寻找lib下的jar包而不会去寻找maven下的jar包。
如何解决?
首先可以在上一张图上选中maven仓库导入的jar包,直接点击apply完成后项目运行成功。
或者可以在同界面上左边栏选中problems,上面会有提示,直接点击fix idea会自动帮你解决这个路径问题。
希望这篇文章对您有帮助。