簡體   English   中英

Lombok 不識別 getter 和 setter

[英]Lombok not recognizing getters and setters

我正在嘗試在我的 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";            
}

請告訴我我錯過了什么?

如果您使用的是 STS,您可能會缺少它所需的插件。 有關詳細信息,請參閱 Lombok站點以了解如何安裝它。

如果mvnw.cmd clean compile命令正常工作,請嘗試重新加載項目。

在 Package Explorer > Maven > 更新項目中右鍵單擊您的項目文件夾

在此處輸入圖像描述

您在使用 Eclipse IDE 嗎? 在某些情況下,您必須在 eclipse 中明確更新項目。

在不使用 lombok 的情況下優於 go

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;
   }
 
  
 

這有幫助嗎(來源)

要將lombok作為“提供”依賴項包含在內,請將其添加到您的塊中,如下所示:

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

JDK9+ with module-info.java 編譯插件的配置應該包含以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM