javaspringstrutsjava-17

Can I use Apache Struts 2 with Java 11/17?


I'm currently trying to do a migration of a project from Java 8 to Java 17 and Spring Boot 2.7 to 3.1. I've encountered dependencies on javax.servlet package in latest Apache Struts 2 Core (6.2.0). I wonder if I can somehow make the project work on JVM 17?

I tried compiling the project, but with no success - the compiler says cannot access javax.servlet.*


Solution

  • The cannot access javax.servlet.* error is NOT caused by using Java 11 / 17.

    It is happening because when you switched to Spring Boot 3.1 you have (implicitly) switched from the Java EE specs to Jakarta EE 9. The javax.servlet.* packages have been renamed to jakarta.servlet.* (There are various tools and guides to help you migrate plain servlet code from Java EE to Jakarta EE, but I don't think this will help you.)

    Struts 2 is also affected (afflicted) by the Java EE -> Jakarta EE issue. Unfortunately Struts 6.x does NOT support Jakarta EE 9. According to Struts issue WW-5141, the Struts team is targeting support for Jakarta EE 9 in the 7.0.0 milestone.


    In summary: