java.lang.IllegalArgumentException: 过滤器映射指定了一个未知的过滤器名称 <filtername
java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name <filtername
我收到以下异常
Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name MyFilter
at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3174)
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:3139)
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1343)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1362)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
... 10 more
过滤器存在于 jar 文件中,该文件是交付 war 的一部分。
@WebFilter(filterName="MyFilter",
urlPatterns = {"/page/*"})
public class myFilter implements Filter {
任何人都可以告诉我我必须做什么才能找到过滤器吗?
它不是问题的重复java.lang.IllegalArgumentException: The servlets named [X] and [Y] are both mapped to the url-pattern [/url] which is not permitted,因为它是一个非常不同的错误消息
换句话说,@WebFilter
不被识别。如果 web.xml
的 <web-app>
元素中有 metadata-complete="true"
属性,就会发生这种情况。它基本上意味着容器假定 web.xml
本身对于元数据是完整的,因此它不会扫描 /WEB-INF/lib
.
中提供的 JAR 中的元数据(注释)
您有多种选择。
- 设置
metadata-complete="false"
.
- 完全删除
metadata-complete
。默认值已经是 false
.
- 通过
<filter>
显式注册过滤器。
另一个可能的原因是 Tomcat 中的错误,该错误已在 7.0.28 中修复。另请参阅此相关问题:Using Tomcat, @WebFilter doesn't work with <filter-mapping> inside web.xml.
我收到以下异常
Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name MyFilter
at org.apache.catalina.core.StandardContext.validateFilterMap(StandardContext.java:3174)
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:3139)
at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1343)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1362)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5472)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
... 10 more
过滤器存在于 jar 文件中,该文件是交付 war 的一部分。
@WebFilter(filterName="MyFilter",
urlPatterns = {"/page/*"})
public class myFilter implements Filter {
任何人都可以告诉我我必须做什么才能找到过滤器吗?
它不是问题的重复java.lang.IllegalArgumentException: The servlets named [X] and [Y] are both mapped to the url-pattern [/url] which is not permitted,因为它是一个非常不同的错误消息
换句话说,@WebFilter
不被识别。如果 web.xml
的 <web-app>
元素中有 metadata-complete="true"
属性,就会发生这种情况。它基本上意味着容器假定 web.xml
本身对于元数据是完整的,因此它不会扫描 /WEB-INF/lib
.
您有多种选择。
- 设置
metadata-complete="false"
. - 完全删除
metadata-complete
。默认值已经是false
. - 通过
<filter>
显式注册过滤器。
另一个可能的原因是 Tomcat 中的错误,该错误已在 7.0.28 中修复。另请参阅此相关问题:Using Tomcat, @WebFilter doesn't work with <filter-mapping> inside web.xml.