【问题标题】:Lombok not recognizing getters and settersLombok 不识别 getter 和 setter
【发布时间】:2020-10-11 23:18:49
【问题描述】:

我正在尝试在我的 sts 中设置 lombok。

到目前为止,我已经完成了以下步骤: 我下载了lambok jar文件。 我运行该文件并指定 sts.exe 的路径,然后单击安装。 我在 pom.xml 中添加了所需的依赖项

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>

我还编辑了我的 sts.ini 文件。安装 lambok.jar 后,文件末尾已经存在以下行

-javaagent:E:\JAVA SOFTWARES\spring-tool-suite-3.9.8.RELEASE-e4.11.0-win32-x86_64\sts-bundle\sts- 
 3.9.8.RELEASE\lombok.jar

所以我把它移到旁边

-vmargs

然后,我清理了我的项目。我也更新了我的项目。关闭 sts 然后再次运行我的应用程序。但它仍然无法识别我文件中的吸气剂。它会产生以下错误。

  The method getFirstname() is undefined for the type Student

学生.java:

package com.crud.msstudent.models;

 import java.io.Serializable;

import javax.persistence.*;
import javax.validation.constraints.NotEmpty;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;

@Getter
@Setter
@Accessors(chain=true)
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "student")
public class Student implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@NotEmpty(message = "First name is required")
private String firstname;

@NotEmpty(message = "Last name is required")
private String lastname;

@Column(nullable = true, name = "email")
private String email;

}

错误显示在我的 StudentController.java 文件中。以下是部分代码:

 @PutMapping(value="/students/{id}")
public Student updateStudent(@PathVariable("id") @Min(1) int id, @Valid 
@RequestBody Student newstd) {
    Student stdu = studentservice.findById(id)
                                 .orElseThrow(()->new 
  StudentNotFoundException("Student with "+id+" is Not Found!"));
    stdu.setFirstname(newstd.getFirstname());
    stdu.setLastname(newstd.getLastname());
    stdu.setEmail(newstd.getEmail());
    return studentservice.save(stdu); 
}           
@DeleteMapping(value="/students/{id}")
public String deleteStudent(@PathVariable("id") @Min(1) int id) {
    Student std = studentservice.findById(id)
                                 .orElseThrow(()->new 
StudentNotFoundException("Student with "+id+" is Not Found!"));
    studentservice.deleteById(std.getId());
    return "Student with ID :"+id+" is deleted";            
}

请告诉我我错过了什么?

【问题讨论】:

  • 您使用的是哪个 IDE?
  • 显示Student
  • 你的类中添加了@getter@setter或者@data注解吗?
  • @AshishKarn 我正在使用 STS。
  • @user7294900 当然请检查我更新的问题

标签: java spring-boot lombok spring-tool-suite


【解决方案1】:

您使用的是 Eclipse IDE 吗?在某些情况下,您必须在 eclipse 中明确更新项目。

最好不要使用 lombok

public class Student implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;

@NotEmpty(message = "First name is required")
private String firstname;

@NotEmpty(message = "Last name is required")
private String lastname;

@Column(nullable = true, name = "email")
private String email;

public Student()
 {
  }

 public Student(int id,String firstname,String lastname,String email)
 {
          this.id=id;
          this.firstname=firstname;
          this.lastname=lastname;
          this.email=email
   
 }



public int getId()
    {
    return id;
    }
   public void setId(int id)
   {
       this.id=id;
   }

   public String getFirstname()
    {
    return firstname;
    }
   public void setFirstname(String firstname)
   {
       this.firstname=firstname;
   }

   public String getLastname()
    {
    return lastname;
    }
   public void setLastname(String lastname)
   {
       this.lastname=lastname;
   }

public String getEmail()
    {
    return email;
    }
   public void setEmail(String email)
   {
       this.email=email;
   }
 
  
 

【讨论】:

  • 我正在使用 STS。
  • 创建明确的 getter 和 setter 就可以了
【解决方案2】:

这有帮助吗(source):

要将lombok 包含为“提供”依赖项,请将其添加到您的块中,如下所示:

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

JDK9+ 和 module-info.java 编译插件的配置应包含以下内容:

<annotationProcessorPaths>
    <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
    </path>
</annotationProcessorPaths>

【讨论】:

    【解决方案3】:

    如果mvnw.cmd clean compile命令正常工作,请尝试重新加载项目。

    在 Package Explorer > Maven > Update Project 中右键单击您的项目文件夹

    【讨论】:

      【解决方案4】:

      如果您使用的是 STS,您可能会缺少它所需的插件。详细安装方法请参考Lomboksite

      【讨论】:

      • 我有上面提到的所需插件,并且已经指定了sts.exe的路径。
      猜你喜欢
      • 2013-07-17
      • 1970-01-01
      • 2020-05-19
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多