【发布时间】:2021-01-11 11:40:57
【问题描述】:
我有以下代码,它会生成
java.lang.NoSuchMethodError: com.misyn.aia.camb.coims.common.dto.ManageReportDto.setAgencyTotals(Ljava/util/List;)V
仅在服务器中部署后出现错误 (openSUSE Leap v15.0/java 1.8)。
我在本地环境中运行相同的 .jar (Windows 10/jave 1.8) 而且效果很好。
所有其他带有 lombok 注释的 dto 也可以正常工作。
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class ManageReportDto implements Serializable {
private String row;
private String total;
private List<String> agencyTotals = new ArrayList<>();
private List<String> bancaTotals = new ArrayList<>();
private String percentage;
private List<String> courier = new ArrayList<>();
}
项目版本为,
- maven v3.6.3
- spring boot v2.1.6
- lombok v1.18.8
【问题讨论】:
-
“所有带有 lombok 注释的 dto 也可以正常工作” 嗯..根据您的解释,有一个 dto 缺少方法,听起来不像“工作正常”。如果在 IntelliJ 中使用 lombok,则需要 lombok 插件。可能是这样的,缺少一些配置,你的服务器与lombok不兼容?
-
检查服务器的 CLASSPATH。可能存在版本错误的依赖 jar 甚至与您的 jar 具有相同类的 jar。
-
@Stultuske 对不起,这是我的错误。我现在更新了问题。我认为这不是 Intellij 问题。我猜问题出在服务器中正在运行的系统中。如何找到服务器兼容性?如果是这样,它对其他 dtos 有什么作用?我认为这不是兼容性问题。
-
@Michal 你的意思是 lombok 依赖?我检查了一下,lombok 没有其他依赖项。请注意系统中带有 Lombok 注释 dto 的所有其他功能都可以正常工作。
-
如果只有一个dto,很有可能dto类(ManageReportDto)在classpath上出现了两次。
标签: java spring-boot maven-3 lombok