AgentSkillsCN

jakarta-namespace

将 Java EE 的 javax.* 导入迁移到 Jakarta EE 的 jakarta.* 命名空间。当您升级到 Spring Boot 3.x、迁移 javax.persistence、javax.validation、javax.servlet 的导入,或在 Jakarta EE 过渡后修复编译错误时,可使用此技能。内容涵盖包映射、批量 sed 命令,以及验证步骤。

SKILL.md
--- frontmatter
name: jakarta-namespace
description: Migrate Java EE javax.* imports to Jakarta EE jakarta.* namespace. Use when upgrading to Spring Boot 3.x, migrating javax.persistence, javax.validation, javax.servlet imports, or fixing compilation errors after Jakarta EE transition. Covers package mappings, batch sed commands, and verification steps.

Jakarta EE Namespace Migration Skill

Overview

Spring Boot 3.0 has upgraded from Java EE to Jakarta EE APIs for all dependencies. This is one of the most significant breaking changes and requires updating all javax.* package imports to jakarta.*.

Important: Packages such as javax.sql.* and javax.crypto.* will NOT change to jakarta.* as they are part of the Java 17+ JDK itself, not part of Java EE.

Before (Java EE)After (Jakarta EE)
javax.persistence.*jakarta.persistence.*
javax.validation.*jakarta.validation.*
javax.servlet.*jakarta.servlet.*
javax.annotation.*jakarta.annotation.*
javax.transaction.*jakarta.transaction.*
javax.ws.rs.*jakarta.ws.rs.*
javax.mail.*jakarta.mail.*
javax.jms.*jakarta.jms.*
javax.xml.bind.*jakarta.xml.bind.*

Example Entity Migration

java
// BEFORE (Spring Boot 2.x) - WILL NOT COMPILE in Spring Boot 3
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}

// AFTER (Spring Boot 3.x) - REQUIRED
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}

Important: Packages such as javax.sql.* and javax.crypto.* will NOT change to jakarta.* as they are part of the Java 17+ JDK itself, not part of Java EE.