gpt4 book ai didi

java - 为什么我在指向 ServletFileUpload 的 HttpServletRequest 上收到 NoClassDefFoundError?

转载 作者:搜寻专家 更新时间:2023-10-31 08:24:28 27 4
gpt4 key购买 nike

我最近开始使用 JMeter 在我的电脑上本地加载测试我的 web 应用程序。我有一个用于上传图片的jsp页面。图像由我的 servlet 处理。当我今天尝试该过程时,出现以下异常/错误:

exception

javax.servlet.ServletException: Servlet execution threw an exception

root cause

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
org.apache.commons.fileupload.servlet.ServletFileUpload.isMultipartContent(ServletFileUpload.java:68)
spyder.servlets.imageProcessing.ImageProcessingServlet.uploadEditedImagesToDB(ImageProcessingServlet.java:527)
spyder.servlets.imageProcessing.ImageProcessingServlet.doPost(ImageProcessingServlet.java:153)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

这是我的 servlet 中异常所指的代码 -

boolean isPart = ServletFileUpload.isMultipartContent(req);

....是的,我已将所有必要的import 语句放入类中。

我不记得对我的系统进行过任何会导致此问题的更改。这个过程一直运行没有任何问题,所以我现在不明白是什么导致它失败了。我认为,在我使用 JMeter 之后它失败了,这很巧合......

最佳答案

所有第 3 方网络应用程序库(如 Commons FileUpload)都属于您的网络应用程序的 /WEB-INF/lib,而不是其他地方。只要您将它放在 JRE/libJRE/lib/ext 中,就会发生此异常。

事实上,正如 Bozho 所提到的,您还需要确保您没有移动/复制/复制任何特定于 servletcontainer 的库(在 Tomcat/lib 中应该保持不变)在类路径的不同位置。但 IMO 不应该导致这种异常。这基本上表明加载 FileUpload API 的类加载器完全不了解 Servlet API。

如果您阅读 Tomcat classloading HOW-TO ,然后您会看到 JRE/libJRE/lib/ext 中的库是由不同的类加载器 (bootstrap) 加载的Tomcat/lib (common) 和 /WEB-INF/lib (webapp)。引导类加载器不了解公共(public)库和 webapp 库。恰恰相反。 common 类加载器了解 bootstrap 类加载器,webapp 类加载器了解两者。由于 Servlet API 通常由 common 类加载器加载,这只能意味着 FileUpload API 由 bootstrap 类加载器加载。这是错误的:)

关于java - 为什么我在指向 ServletFileUpload 的 HttpServletRequest 上收到 NoClassDefFoundError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832779/

27 4 0
文章推荐: java - 如何使用 Google Json Parsing API (Gson) 来解析我的 json 中的一些动态字段?
文章推荐: objective-c - 为什么Objective-C类和协议(protocol)可以重名,而Swift不可以,语言实现有什么区别?
文章推荐: javascript - 单击更改
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com