微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

使用: 弹簧靴 马文 龙目岛 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;    
    }

据我所知,一切似乎都在这里检查。至少,没有警告或错误。但是,当我尝试在其他地方使用 builder() 方法时,如下所示:

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

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

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

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

在这里忽略了什么吗?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。