Lombok 在 Linux 上无法在自行安装的 STS 中工作——为什么我的构造函数无法识别 @Builder 注释

Lombok not working in self installed STS on Linux -- Why are my constructors not recognizing the @Builder annotation

使用: Spring 开机 行家 龙目岛 STS 4.9

我有一个简单的构造函数,它接受 3 个参数并将它们分别分配给相应的字段。另一个字段是自动生成的,另外两个字段由 Spring 自动装配。显式定义的构造函数用 @Builder 注释(在构造函数级别,正如 Lombok 在文档中推荐的那样。)构造函数如下所示:

    @Id
    @GeneratedValue( )
    @Column(value="account_id")
    private Long accountId;
    
    @Setter
    @Column(value="user_id")
    @ManyToOne
    private Long userId;
    
    @Setter
    @Column(value="credentials")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    private Credentials credentials;
    
    @Setter
    @Column(value="user_profile")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    private UserProfileInfo userProfileInfo;
    
    @Setter
    @Column(value="account_credit")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    @Autowired
    private Credit acctCredit;
    
    @Column(value="account_state")
    @OneToOne
    @PrimaryKeyJoinColumn(name="accountId")
    @Autowired
    private AccountState acctState;
    
    
    
    @Builder
    public Account(Long userId, Credentials cred, UserProfileInfo info){
        this.userId = userId;
        this.credentials = cred;
        this.userProfileInfo = info;    
    }

就我所见,一切似乎都已检查 here.At 最起码,没有警告或错误。但是,当我尝试在别处使用 builder() 方法时,如下所示:

    @Test
    void testThreeArgConstructerReturnsProperObject() {
        
        Account testAccount = Account.builder().build();
        
    }

...就好像 @Builder 方法根本不存在一样。我在构建下得到了通常的红色下划线,但是用光标悬停只给出了在中声明一个新的 builder() 的选项 帐户 class。如果我从测试 class 中删除 builder(),智能感知只会显示 Account.classsuperthis。就好像注释不存在一样。

起初,我以为我以某种方式误用了它,因为我最近才开始使用它,但我已经检查了我的代码并与示例进行了几个小时的比较。据我所知,语法和用法都是正确的。

我也做了一些调试。除了检查 intellisense 之外,我还尝试在不同的范围内使用它,包括在同一个包中,我尝试了“最简单的形式”方法,我在其中更改了方法,因此它只有一个 int 参数。在每种情况下,我都无法让环境确认构造函数。

我是不是忽略了什么?

我终于明白了!龙目岛不工作的原因是我的电脑。自从切换到 PC 后我就没用过它。显然,Lombok 不喜欢 linux 上的 STS。为了让它工作,我必须通过一个不容易找到说明的过程手动安装,我最终找到了 here.