【问题标题】:Lombok not working in self installed STS on Linux -- Why are my constructors not recognizing the @Builder annotationLombok 无法在 Linux 上自行安装的 STS 中工作——为什么我的构造函数无法识别 @Builder 注释
【发布时间】:2021-06-06 11:15:03
【问题描述】:

使用: 弹簧靴 马文 龙目岛 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() in 帐户类。如果我从测试类中删除builder(),智能感知只会显示Account.classsuperthis。就好像没有注释一样。

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

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

我在这里忽略了什么吗?

【问题讨论】:

  • 如果有任何我遗漏的信息,请告诉我,我会发布的。我也可以发布作曲类,但我认为它们不相关。而且它们都很大。
  • 其他 lombok 注释是否提供了您期望的内容?
  • 不确定,我会尝试测试。我不认为我目前正在使用任何其他人。我将在测试中尝试一对。
  • @Stultuske 不,他们不是。创建项目时,我通过 Initializr 将 Lombok 引入了 maven。我知道我有罐子,注释在悬停+单击时自动导入。不知道为什么他们不工作。
  • 刚刚确认。 1.18.20.jar 在构建路径上。我认为 Maven 没有指定版本。

标签: java spring-boot lombok sts


【解决方案1】:

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

【讨论】:

  • 我还想更改标题以更好地反映问题。我将保持这个问题不变,以免扭曲原始上下文。我只是不想让其他人经历这个过程。我早上 5 点左右开始了这段旅程,现在我刚刚结束...... 下午 3 点
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多