【问题标题】:How to solve java.lang.NoSuchMethodException: package.MyCustomFilter.<init>() while starting the servlet filter启动servlet过滤器时如何解决java.lang.NoSuchMethodException: package.MyCustomFilter.<init>()
【发布时间】:2020-10-11 00:49:27
【问题描述】:

应用程序服务器无法启动 servlet 过滤器。 错误消息是java.lang.NoSuchMethodException: package.MyCustomFilter.&lt;init&gt;()。 HttpFilter 扩展了实现 init() 方法的 GenericFilter。所以没有必要覆盖它。我已经尝试过重写 init() 方法它没有解决问题。

过滤器类:

public class MyCustomFilter extends HttpFilter {

    private static final long serialVersionUID = -5281928035553598730L;
    private static Logger log = Logger.getLogger(MyCustomFilter.class.getName());

    protected MyCustomFilter() {
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {
        super.doFilter(req, res, chain);
        log.info("filter Request");
    }

}

web.xml


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
       ...
     <filter>
        <filter-name>myCustomFilter</filter-name>
        <filter-class>com.dtmarius.gateway.filter.MyCustomFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>myCustomFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

【问题讨论】:

    标签: java tomcat servlet-filters apache-tomee


    【解决方案1】:

    我发现&lt;init&gt;() 不是Filter 中的init() 方法。异常告诉我们没有公共构造函数。每个 Servlet 过滤器都需要一个公共构造函数。只需添加一个,问题就解决了。在我的示例中,您还可以删除不必要的受保护构造函数。如果没有,则使用默认构造函数。

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      • 2013-08-04
      • 2017-03-26
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      相关资源
      最近更新 更多