[英]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站點以了解如何安裝它。
您在使用 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.