JSP 页面出现 Unable to compile class xxx 时的问题解决思路

最近在学习基本的 JSP 开发上传功能时,出现了 JSP 页面提示 Unable to compile class xxx 的错误。在排查问题时,发现在 IDE 中的当前 JSP 页面代码中引入了 commons-fileupload 包中的几个类,如 DiskFileItemFactory、ServletFileUpload类等。这些类并没有提示红字,<% page include %>也没有问题,项目也能正常部署。

其实这个问题在我们弄清 JSP 的生命周期后就能很清楚知道问题应该在哪了,JSP 的生命周期如下:

  1. 编译阶段:servlet容器编译servlet源文件,生成servlet类;
  2. 初始化阶段:加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法;
  3. 执行阶段:调用与JSP对应的servlet实例的服务方法;
  4. 销毁阶段:调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例。

当出现 Unable to compile class xxx 情况时,异常抛出在编译阶段,此时 JSP 页面正在被容器 Tomcat/Jetty 编译,当容器发现找不到页面中引入的类时,则会出现上述状况。

此时问题基本已经清晰,问题应该出在 commons-fileupload 的 jar 包在项目中有引入,但在 tomcat 容器的 lib 中并没有引入。去容器的 lib 文件夹下检查,果然没有,将 commons-fileupload 和 commons-io 两个 jar 包放置在 tomcat 的 lib 文件夹下后,问题解决。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值