我可以在Java 11/17中使用Apache Struts 2吗?[副本]

kokeuurv  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(173)

此问题已在此处有答案

Tomcat is looking for javax.servlet.Filter but I have jakarta.servlet.Filter [duplicate](1个答案)
3天前关闭。
我目前正在尝试将一个项目从Java 8迁移到Java 17,并将Sping Boot 2.7迁移到3.1。我在最新的Apache Struts 2 Core(6.2.0)中遇到了对javax.servlet包的依赖。我想知道我是否能以某种方式使项目在JVM 17上工作?
我尝试编译该项目,但没有成功-编译器显示cannot access javax.servlet.*

xfyts7mz

xfyts7mz1#

cannot access javax.servlet.*错误不是由使用Java 11 / 17导致的。
之所以会发生这种情况,是因为当您切换到Sping Boot 3.1时,您已经(隐式地)从Java EE规范切换到了Jakarta EE 9。javax.servlet.*包已被重命名为jakarta.servlet.*(有多种工具和指南可以帮助您将普通servlet代码从Java EE迁移到Jakarta EE,但我认为这对您没有帮助。)
Struts 2也受到Java EE -> Jakarta EE问题的影响(困扰)。遗憾的是,Struts 6.x不支持Jakarta EE 9。根据Struts的问题WW-5141,Struts团队的目标是在7.0.0里程碑中支持Jakarta EE 9。
总的来说:

  • 如果回滚到SpringBoot 2.7,则可以使用Java 17和Struts 2 6.2.0版。
  • 如果要使用SpringBoot 3.x,则需要等到Struts 2版本7.0.0发布后再执行。(不要问我什么时候...)

相关问题