You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring 6.x迁移时Apache Tiles 3.x的javax转jakarta适配问题咨询

解决Spring 6.x与Apache Tiles 3.0.x的Jakarta Servlet适配问题

方案1:升级Apache Tiles到支持Jakarta EE的版本

Apache Tiles从3.1.0版本开始已完成javax.servlet到jakarta.servlet的迁移,完全兼容Spring 6.x的Jakarta环境。

  • 修改项目依赖(以Maven为例):
    将原Tiles依赖:
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.x</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.0.x</version>
    </dependency>
    
    替换为3.1.x及以上稳定版本(如3.1.2):
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.1.2</version>
    </dependency>
    
  • 验证:升级后无需额外配置,Tiles会自动适配Jakarta Servlet API,与Spring 6.x正常协作。

方案2:字节码转换适配(临时过渡方案)

若暂时无法升级Tiles版本,可通过字节码转换工具将Tiles 3.0.x jar包中的javax.servlet引用替换为jakarta.servlet:

  • 使用Eclipse Transformer Maven插件在构建阶段转换依赖,在pom.xml中添加配置:
    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.transformer</groupId>
                <artifactId>transformer-maven-plugin</artifactId>
                <version>0.4.0</version>
                <executions>
                    <execution>
                        <id>transform-tiles</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>transform</goal>
                        </goals>
                        <configuration>
                            <transformations>
                                <transformation>
                                    <rules>org.eclipse.transformer.jakarta.JakartaRules</rules>
                                    <inputs>
                                        <input>${project.build.directory}/dependency/tiles-*.jar</input>
                                    </inputs>
                                    <outputs>
                                        <output>${project.build.directory}/transformed/</output>
                                    </outputs>
                                </transformation>
                            </transformations>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    
  • 注意:此方案仅作临时过渡,长期仍建议升级Tiles版本,避免潜在兼容性风险。

方案3:替换为兼容Jakarta的视图框架

若项目有重构计划,可替换Tiles为完全支持Spring 6.x和Jakarta EE的视图框架,比如Thymeleaf:

  • Thymeleaf通过thymeleaf-layout-dialect提供成熟的布局能力,可无缝替代Tiles的核心功能;
  • 迁移成本较低,官方文档有详细迁移指引,社区支持完善。

内容的提问来源于stack exchange,提问作者Nagarjuna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 09:42:50