问题标签 [intellij-lombok-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gradle - NoSuchMethodError - Intellij 和 lombok
我在 IntelliJ 中遇到了一个奇怪的问题。我在 gradle 4 多模块项目中使用 Lombok (1.18.2)、IntelliJ(2018.2.2) 和 JUnit 5。
我花了几个小时来复制这个。
运行覆盖范围内的所有测试用例。
之后会弹出一个
如果我按 OK 并重新运行单元测试用例。对于 getter 和 setter ,它将以java.lang.NoSuchMethodError开始失败。
在此之后删除 Lombok 并生成 getter 和 setter 也没有效果。
尝试了一切来解决这个问题(启用注释处理器、Lombok 插件、干净的构建)但没有运气。
编辑1:
根 build.gradle:
子项目 build.gradle
java - 无法将 Lombok 与 Java 11 一起使用
我们将 Java 版本从 8 升级到 11,但我遇到了 getter/setter 方法的编译错误,我在其中使用 Lombok 的 Getter 和 Setter Annotations 实现了 POJO 类。
有没有办法使用 Lombok 的@Data
注解来提供 getter 和 setter 而无需在 Java 11 中实现它们?
目前,我面临以下错误:
无法找到 getStoreName()
wherestoreName
被声明为类中的全局变量,在类上方带有 @Data Lombok 注释。
java - Lombok 和 Spock:@RequiredArgsConstructor 不会隐藏具有接口类型的字段的默认无参数构造函数
似乎 @RequiredArgsConstructor 在下面的代码中不起作用 - 但仅在使用 Spock 框架的测试中,并且仅适用于 interface 类型的字段Dao
。
严格来说 -考虑到 JUnit5 下的类似测试根本无法编译,代码正在工作,而我认为它不应该工作。
有人可以解释它是错误还是功能?
下面的代码工作正常 - 但仅在 Spock 中(JUnit5 下的类似测试无法编译)。
似乎 Spock 测试以某种方式看到了一个默认的无参数构造函数(而 JUnit 测试没有看到这个构造函数)
但是当上面的 2 条注释行未注释时,测试失败并出现以下错误:
而且这个 JUnit 测试根本无法编译:
错误是:
以下是我用于此项目的依赖项:
java - 将 Lombok 插件添加到 IntelliJ
Intellij 无法识别 Spring 注释,我认为它与 Lombok 相关。
我在 IntelliJ 设置中添加了插件并启用了注释处理
我正在使用 Maven,我有这个依赖
Intellij 仍然无法识别 Slf4j 和 Spring 注释
java - 使用 lombok 自动删除 getter-setter?
我有一个项目。我不使用龙目岛。我使用手动创建的 getter 和 setter。
现在,我想导入 Lombok。导入后,我将用于所有实体。
我必须手动添加@Data
到所有实体吗?我必须手动删除所有实体?没有其他方法可以自动转换这些类吗?
我找不到这样的问题:
intellij-idea - 为什么我在反编译的类中看到 lombok 导入
当我在 IntelliJ 中从 spring-data-mongo@2.1.3 打开和反编译一个类时,我看到了import lombok.NonNull
,但我在我的项目中没有看到任何 lombok 瞬态依赖项。现在,这是有道理的,因为 lombok 在spring-data-parent
. 据我了解,lombok 不是运行时依赖项,但为什么我会在那里看到它呢?支持 Lombok 反编译类是 IntelliJ 的魔法吗?
java - 在复制构造函数中使用直接字段访问而不是 getter 会导致空指针异常
它必须是 Java 101,但我不知道为什么我不能使用直接字段访问以及为什么我不得不在复制构造函数中使用 getter。
我有一堆实体。它们像树一样组织起来。链接的实体被急切地获取。
我使用 Hibernate、Lombok 和 IntelliJ 作为调试器。
当我从根部拉出其中一个实体树时,我得到一棵对象树。我们称它为“原始”。由于某些与业务需求相关的原因,我需要复制它(我们称之为“副本”)。我使用复制构造函数来做到这一点。我首先使用直接字段访问编写了复制构造函数的一个版本。
它没有用。当我检查调试器时,我看到 original.someField(以及其他字段)始终为空。
不过,它可以使用吸气剂。
在调试器中,我可以看到 original.handler.target 中的字段已“设置”。(我不知道 handler.target 是什么)。
有人可以向我解释为什么直接字段访问不起作用吗?
(我问的是技术原因,而不是哲学上的原因,比如“你应该总是使用吸气剂”等)。
我也很高兴知道什么是“handler.target”。
提前致谢。
java - Intellij 如何在使用 gradle 和 lombok、google protobuf 和 swagger 等工具时忽略“out”目录中的重复类
我的项目有很多模块,我们正在使用带有少量代码生成器的 gradle。示例配置:
项目不使用 Intellij 编译,因为它在指定目录和 Intellij 生成的 /out/ 目录中生成类。
例如在以下位置生成相同的重复类:
\out\production\classes\generated\ - Intellij \build\generated-src..\ - Gradle
它给了我数百条错误消息,例如: Error:(30, 14) java: duplicate class: com.xxx.xxx.xxx.YourClass 我已经尝试了在这里和 Intellij 论坛上可以找到的所有内容。没有什么对我有用。
我什至尝试在 File > Settings > Build, Execution, Deployment > Compiler > Excludes 中排除“out”目录,但它也不起作用。
唯一的方法是构建项目,手动删除所有“out”目录,然后禁用注释处理器。但这不是使其工作的最佳方式。
java - 使用 Lombok 创建类后如何修复编译器错误
我做了以下步骤:
- 将 Lombok 依赖添加到 pom.xml
- 将 Lombok 插件添加到 Intellij
- 在 Intellij 中启用注释处理
我可以在结构选项卡的 Intellij 中看到 getter、setter 和构造函数。
虽然没有任何语法错误。
但是当我尝试编译项目时,它给出了一个错误:
以下是我想在其中使用 Lombok 的 java 类:
我需要做其他事情吗?