【问题标题】:Lombok setter generates error java.lang.NoSuchMethodError after the deploymentLombok setter 部署后生成错误 java.lang.NoSuchMethodError
【发布时间】: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


【解决方案1】:

编译您的代码,然后使用反编译器查看您的代码是否有 GETTER 和 SETTER 方法。

JAVA反编译器:http://java-decompiler.github.io/

它将帮助您了解是否生成了 GETTER 和 SETTER 方法。

另外,关于 IDE 配置,您也可以参考下面的 stackoverlow 链接。

Lombok is not generating getter and setter

【讨论】:

  • 他明确表示他在服务器上收到错误,它在本地工作。我怀疑它与 IDE 配置相关。
  • 这取决于他如何运行应用程序以及他如何构建和部署它。根据这一点,我们可能会有不同的问题场景。此外,lombok 只需要编译时而不是运行时。因此,运行应用程序以及构建和部署似乎是不同的。
  • 我同意构建和部署是不一样的。但是:如果他的 IDE 没有编译代码,他就无法在本地对其进行测试。我还假设在整个开发/部署阶段之间存在某种形式的 CI 周期,这会提到编译时间问题
  • @Aashish 同一个 jar 文件如何在不同的服务器上以不同的方式工作?我部署了在本地运行良好的同一个 jar,但是一旦部署它仍然有同样的问题(没有工作)
  • 和@Aashish 我反编译了代码,生成的getter setter 是正确的。
猜你喜欢
  • 2012-08-01
  • 2020-05-19
  • 1970-01-01
  • 2015-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
相关资源
最近更新 更多