报错java.lang.NoClassDefFoundError。

一、问题场景

在本地写程序的时候是能找到依赖的。但是只要在tomcat上运行,只要是本地加的jar包中的类,通通找不到。

pom.xml中不报找不到包的错:

调试controller,也不报错:

但是只要一在tomcat上跑起来就会出错!

1

我也不知道为什么,调试时方法都能找到,但是一在tomcat里面跑就不行了。

二、尝试解决

后来我觉得,会不会是本地文件的依赖没有加进tomcat运行库中呢?

既然自动不会加,那么我们就手动添加吧。

于是我手动把那个gson包放进了tomcat的lib中:

1

然后运行就成功了,果然是本地jar无法加入tomcat中导致的。

三、这样并没有完全解决问题

只是这次暂时解决了运行问题而已。如果进行项目的打包,本地包默认是不会一起打包的,也就是说war文件中还是缺少这两个依赖。所以我们要想办法把这两个包打进war文件中。

有两种方法:

  1. 修改pom.xml配置,把本地依赖也一起打包(不推荐,maven本地仓库中还是没有这个依赖,下次还是要继续改配置进行打包,很麻烦)。
  2. 把本地的依赖安装到maven仓库中,这样就能一起打包了。

使用gson作为例子,具体指令如下:

在gson文件的目录下执行该指令,就能完成gson依赖的安装,之后就可以找到gson依赖了。

三、总结

记录一下。

发表评论

电子邮件地址不会被公开。 必填项已用*标注