Tomcat 11 and Tuckey

Today I noticed that Tuckey 4.0.3 and Tomcat 11 do not want to play nicely with each other. If you add Tuckey like described here, Tomcat throws an error during startup:
java.lang.ClassCastException: class org.tuckey.web.filters.urlrewrite.UrlRewriteFilter cannot be cast to class jakarta.servlet.Filter

Any advice on how to make this work again? I’ll add the full stack trace below.

Thanks in advance!

Stack trace:

13-May-2025 15:00:07.483 SEVERE [main] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [UrlRewriteFilter]
	java.lang.ClassCastException: class org.tuckey.web.filters.urlrewrite.UrlRewriteFilter cannot be cast to class jakarta.servlet.Filter (org.tuckey.web.filters.urlrewrite.UrlRewriteFilter and jakarta.servlet.Filter are in unnamed module of loader java.net.URLClassLoader @63c12fb0)
		at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:221)
		at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:97)
		at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3865)
		at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4464)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716)
		at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:769)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1164)
		at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1160)
		at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
		at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
		at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
		at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:716)
		at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:203)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardService.startInternal(StandardService.java:412)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:866)
		at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:164)
		at org.apache.catalina.startup.Catalina.start(Catalina.java:759)
		at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
		at java.base/java.lang.reflect.Method.invoke(Unknown Source)
		at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:342)
		at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473)

Have you tried with the latest Tuckey? I think 5.1.3 is available and should work…

Thanks @seb - no, I have not tried yet. I was being lazy, thought you guys may have a drop in solution already. :wink:

Out of curiosity, which Lucee and Tomcat versions do you use for your deployments?