项目迁移到新开发环境后提示java.lang.ClassNotFoundException: ServletException处理问题方式及思路

版权声明:HadesZ@金翰海 https://blog.csdn.net/AITop_Leader/article/details/86535200

最近,有一个web项目迁移到新开发环境MyEclipse CI 2018,在安装好中间件应用服务器weblogic后,启动时候提示java.lang.ClassNotFoundException: ServletException,以下是整个问题处理方式及思路,(Eclipse和MyEclipse均可满足该问题处理方法)便于大家借鉴下。

问题解析

当项目部署和配置完毕后开始执行,提示如下:
在这里插入图片描述
打开weblogic控制台启动项目,同样也提示有问题并且启动失败,这就意味着项目发布是有问题的。
简单来讲,错误原因就是

java.lang.ClassNotFoundException: com.core.runtime.XInstance
java.lang.ClassNotFoundException ServletException

表面意思是“找不到类文件的异常”,这个时候就要警惕起来,有两种可能:
一是部署的weblogic的lib资源丢失(事实证明如果没有操作过就不会);
二是项目SRC下面的java文件没有被编译,导致没有class文件(这种可能性更大)

处理方式

以下是根据三种方向,逐一排除问题的处理方法。

一,从中间件应用服务器层面来处理问题,事实证明weblogic是正常的

参考1:
https://dongni110.iteye.com/blog/1986115
解决办法:按照路径设置myeclipse - window-perferences-myeclipes-servers-weblogic-weblogic10.X-paths-perpend to classpath- add jar/zip ,选择“E:\Oracle\Middleware\wlserver_10.3\sip\server\lib”所有jar包。适用于MyEclipse10以前的版本。
参考2:
https://blog.csdn.net/qq_30546099/article/details/76819618
https://blog.csdn.net/veid_f3/article/details/42610953
解决办法:路径和上述一致,主要是对服务器JDK设置,实际上只要能进入控制台,证明wls(Weblogic Server)是可以正常启动的。
总结:因此,当中间件应用服务器能够正常运行,并且进入到控制台配置,第一种处理方式可以忽略。

二、从IDE层面考虑项目是否有文件冲突需要清理和重启

参考1:
https://blog.csdn.net/weixin_42476601/article/details/80992900
解决办法:确定project->Build Automatically是否勾选上;能不能进行编译,如果还是不能,则进行手动编译:进入clean对话框,选择Clean projects selected below;如果还是不能编译,那就是项目设置出了问题,或者是java本身编译有误,没有产生class文件。

参考2:
https://blog.csdn.net/qq_30546099/article/details/76819618
解决办法:异常显示类没有找到抛出异常。把weblogic的缓存清理一下,重新部署发布weblogic即可。
11g以上的是在\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp 。同样的,base_domain是我的域,AdminServer是我的服务。删了tmp下面的_WL_user 文件夹就行了。如果多次删除还是无果,建议查看java文件是否被编译,没有产生class文件。

总结:如果项目设置正确,并且多次清理tmp还是在编译后提示,证明java文件有错,并没有编译生成class文件导致无法找到类文件。

三、查看项目src文件下是否出现问题并且无法编译

当我点击进入项目SRC路径后,果然发现很多java文件提示有错,并且都指向一个错误
在这里插入图片描述

    The import javax.servlet.annotation cannot be resolved

原来,因为我本身java文件就有问题无法编译生成class文件(类文件),在运行的过程才会提示java.lang.ClassNotFoundException: ServletException,其实真正的问题就是java引用servlet包的时候没有找到该资源,那么情况又分为服务器缺少jar包和项目缺少资源库情况。但是,只要中间件应用服务器能够正常运行,就只能是项目本身就有问题,后来找到问题如下,通过项目重新配置资源库,得到充分解决。
处理方式:
在这里插入图片描述
右键点击左侧项目———》点击Properties———》点击Java Build Path(Java构造路径)———》选择Libraries,根据项目情况完善项目资源和JARs,由于我发现和之前有出入就开始配置。
有问题的项目资源:
在这里插入图片描述
调整后的项目资源:
在这里插入图片描述
此处的JRE System Library可以根据项目情况调整,通过Add Library…实现并apply。

配置完毕后,就关闭MyEclipse,清空项目class目录下所有文件,启动MyEclipse重新编译,项目成功运行!

当然,在前面两种方式保证项目环境正常情况下,而且是SVN导致无法完全获取项目文件的情况下,可以重新拷贝项目直接运行,在和SVN建立联系即可。

另外,针对tomcat提示javax-servlet不存在,可以参考以下解决方法
参考1:
https://www.cnblogs.com/dabingzi/p/6594326.html
解决办法:从tomcat lib目录下拷贝一个servlet-api.jar的包到“JDK\jre\lib\ext”目录下,凡是出现找不到包的情况,都可以将找到的包放到JDK\jre\lib\ext下,然后再编译就能够通过。

参考2:
http://blog.sina.com.cn/s/blog_be01fd750102w901.html
https://blog.csdn.net/nokia_lc/article/details/52204766 (有详细图示操作方式)
解决办法:到tomcat的lib目录下面找到这个包,然后在eclipse中,右击项目,选右击项目,选择Build Path->configure build path->Libraries->Add External JARs,找到你计算机中tomcat的解压路径,在common\lib文件夹下,选中"servlet-api.jar"
拓展:Description Resource Path Location Type Java compiler level does not match the version of the insta
https://www.cnblogs.com/VolcanoCan/p/9790012.html
在项目上右键Properties-》Project Facets,在打开的Project Facets页面中的Java下拉列表中,选择相应版本。

以上就是整个处理问题的方法,对于新迁移项目有帮助的内容。

其实,网上和论坛中解决问题的方式很多种,但是适合自己的处理方式必须自己借鉴后消化形成自己独有的才是真正自己学到的技术。 --HadesZ

猜你喜欢

转载自blog.csdn.net/AITop_Leader/article/details/86535200
今日推荐