【问题标题】:NoClassDefFoundError in JSPJSP 中的 NoClassDefFoundError
【发布时间】:2015-03-08 01:41:03
【问题描述】:

我在 ServletException 中收到 NoClassDefFoundError,在这些行的第二行中:

List items;
items = servlet_up.parseRequest(request);

我一直在寻找它,从Why am I getting a NoClassDefFoundError in Java? 我想我已经了解情况,但不是解决方案。

how to fix NoClassDefFoundError in javaAlvaro 中说我们可以导入缺少的库来修复它,但是因为:

1.- 我不知道哪个库适合我(也许是 servlet-api.jar?)

2.- 它是 JSP 而不是 Java 类(我的意思是,我不编译它,所以我不知道它使用的是哪个 jar)

3.- 我应该把罐子放在最后的哪里?在 JSP App 的./lib/ 文件夹中?

就是这样,我真的不知道该怎么做。

提前谢谢你!

更新List 类没有问题,因为问题出在 List 已经被使用的第二行。

此外,我还有以下导入:

<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="org.apache.commons.io.*" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*" %>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>

最后,我在运行时得到的是(我将删除代码中的一些 cmets 行以使其更短):

type Informe de Excepción
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción

org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /uploadFile.jsp en línea 39

37:   ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
39:   List items = servlet_up.parseRequest(request);

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

causa raíz

javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
org.apache.jsp.uploadFile_jsp._jspService(uploadFile_jsp.java:137)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

causa raíz

java.lang.NoClassDefFoundError: org/apache/commons/io/IOUtils
org.apache.commons.fileupload.util.Streams.copy(Streams.java:123)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:70)
org.apache.commons.fileupload.MultipartStream.readBodyData(MultipartStream.java:593)
org.apache.commons.fileupload.MultipartStream.discardBodyData(MultipartStream.java:617)
org.apache.commons.fileupload.MultipartStream.skipPreamble(MultipartStream.java:634)
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1023)
org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:1003)
org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:310)
org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:334)
org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:115)
org.apache.jsp.uploadFile_jsp._jspService(uploadFile_jsp.java:97)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

【问题讨论】:

  • 您能否将确切的异常跟踪添加到您的问题中:)?
  • 添加了导入和堆栈跟踪。感谢您的帮助!
  • 您应该将包含IOUtils 的JAR 放在WEB-INF/lib 文件夹中
  • 你是否将commons io jars添加到WEB-INF的lib文件夹中?
  • IOUtils 类可以在commons-io-2.1.jar 中找到。无需完全使用 2.1,您可以使用任何其他可用的版本 :)

标签: java jsp


【解决方案1】:

从您的异常堆栈跟踪中,很明显您在类路径中缺少org/apache/commons/io/IOUtils 类。所以将commons-io-2.4.jar(不一定是2.4,可以是其他版本)添加到你的WEB-INF/lib目录下。

您可以在 Maven 存储库here 中找到所有 JAR

【讨论】:

    猜你喜欢
    • 2015-12-08
    • 1970-01-01
    • 2014-01-11
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多