0

Does the latest version 6.* Struts2 support Tomcat 10?

Exception starting filter [struts2]

java.lang.ClassCastException: class org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to class jakarta.servlet.Filter (org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @13e547a9; jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader @2d209079)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4562)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5205)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
Roman C
  • 49,761
  • 33
  • 66
  • 176

1 Answers1

1

The error makes clear that it doesn't support Tomcat 10. The "problem" is that Tomcat 10 switched to the Jakarta EE 9 specification. And Jakarta EE 9 switched from the javax.* package namespace to the jakarta.* package namespace.

According to the version notes, Struts2 6.0.0 GA is Servlet 3.1 (Java EE 7), which uses the javax.* namespace, and means it is generally compatible with JavaEE 7 and 8 and Jakarta EE 8, but not with Jakarta EE 9 and higher. This means you need to use Tomcat 9.

According to WW-5141 Jakarta EE 9 (or higher) support is planned in Struts2 7.0.0.

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197