java.lang.NoClassDefFoundError : Could not initialize class org. apache.commons.text.StringEscapeUtils

标签 java filter servlet-3.0

我正在编写一个字符过滤函数,使用 commons-text-1.6.jar .
日志功能没问题,但随后出现此错误:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.text.StringEscapeUtils
    cc.openhome.web.EscapeWrapper.getParameter(EscapeWrapper.java:15)
    cc.openhome.controller.Login.doPost(Login.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    cc.openhome.web.EscapeFilter.doFilter(EscapeFilter.java:16)

代码:
package cc.openhome.web;

import org.apache.commons.text.StringEscapeUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrappe

public class EscapeWrapper extends HttpServletRequestWrapper {
    public EscapeWrapper(HttpServletRequest req){enter code here
        super(req);
    }

    public String getParameter(String name){
        String value = getRequest().getParameter(name);
        return StringEscapeUtils.escapeHtml4(value);
    }
}

最佳答案

显然很多事情都会导致这种情况,但我找到了一个更详细地讨论这个问题的线程,你应该检查 this出去!

编辑:该线程的最佳答案:

  • (公认):
    当您的代码依赖于一个类文件并且它在编译时存在但在运行时找不到时会导致这种情况。寻找构建时间和运行时类路径的差异。
  • 虽然这可能是由于编译时和运行时之间的类路径不匹配,但这不一定是真的。
  • java.lang.ClassNotFoundException 此异常表示在类路径中找不到该类。这表明我们正在尝试加载类定义,并且类路径中不存在该类。
  • java.lang.NoClassDefFoundError 该异常表示JVM在其内部类定义数据结构中查找类的定义,但没有找到。这与说它无法从类路径加载不同。通常这表明我们之前尝试从类路径加载一个类,但由于某种原因它失败了 - 现在我们试图再次使用该类(因此需要加载它,因为它上次失败了),但是我们'甚至不会尝试加载它,因为我们之前未能加载它(并且有理由怀疑我们会再次失败)。较早的失败可能是 ClassNotFoundException 或 ExceptionInInitializerError(指示静态初始化 block 中的失败)或任何数量的其他问题。关键是,NoClassDefFoundError 不一定是类路径问题。
  • 关于java.lang.NoClassDefFoundError : Could not initialize class org. apache.commons.text.StringEscapeUtils,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53459184/

    相关文章:

    java - 如何将 Android 设备中的 Whatsapp 联系人与移动联系人分开

    javascript - "10 $digest() iterations reached. Aborting!"由于使用 angularjs 进行过滤

    javascript - 如何使用 HTML 按钮实现简单的递归过滤器

    tomcat8 - 如何将请求和响应的 tomcat 8 容器字符编码设置为 UTF-8 而不是 ISO-8859-1

    java - Intellij 显示断点对于我导入的 jar 文件无效,有人知道如何使其有效吗?

    java - 如何使用 Dom4J 在 Java 中定义 XML 实体?

    java - 正则表达式替换java中的所有内容

    arrays - 解决这个完成 block

    java - 是否应该为来自服务器的异步响应更改 HTTP 客户端?

    Grails - Servlet 3.0 异步请求处理