Lombok和STS问题 - 方法未定义

时间:2015-05-27 09:30:36

标签: eclipse spring-tool-suite eclipse-luna lombok

我的STS版本为3.6.3.SR1,它基于Eclipse Luna 4.4.1。

我做了以下步骤:

1)下载并运行lombak runnable jar并给出了我的STS路径。 2)我验证了vmargs的条目,但是缺少了Xbootclasspath并将其添加到了喜欢的地方,

-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:MaxPermSize=256m
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xms512m
-Xmx1024m
-javaagent:C:\tools\Lombok\lombok.jar
-Xbootclasspath/a:C:\tools\Lombok\lombok.jar

3)我有退出并从快捷方式以及STS.exe的绝对位置打开STS

4)我验证了用@Data和其他lombak注释注释的java类的大纲。我可以看到生成的getter和setter。甚至自动辅助也会显示该方法。

5)我做了Maven - >更新项目,甚至做了一个Project Clean

6)确认lombak也是从关于帮助的STS安装的。

即使在上述所有活动之后,仍有许多编译器问题在所有@Data或@Getter或@Setter注释上抱怨未定义的方法getXXX()和setXXX()。

Maven构建运行成功,运行时行为很好,因为编译的类似乎有getter和setter。

Intelli J似乎没有任何问题,因为其他开发人员可以使用该库。

我的pom也有以下条目:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.4</version>
</dependency>

我该如何解决?

P.S:我在STS之上下载了Eclipse Kepler,以启用JBoss Fuse Tooling。

8 个答案:

答案 0 :(得分:4)

我有一个类似的问题,通过改变pom.xml文件中lobak依赖的范围来解决。

最初范围是“提供”,我相信我看到了你描述的所有奇怪的行为。例如,上下文相关的代码完成下拉包括getter和setter方法。当我从下拉菜单中选择一个getter方法时,该方法被正确地插入到源中。插入getter方法后,STS将方法调用标记为编译错误,因为它认为该方法不存在。

从lombok依赖项中删除“提供”范围后,STS正常工作,并且可以将getter / setter方法添加到代码中,可以编译/打包和执行代码。 getter / setter方法的执行起作用。

答案 1 :(得分:3)

@Karthik R,谢谢你的帖子。以下帮助我解决了这个问题

  1. 转到https://projectlombok.org/并下载并双击该jar并在IDE中安装
  2. 之后打开.ini文件,看看它是否有 javaagent Xbootclasspath 变量。
  3. 在我的情况下, Xbootclasspath 缺失了,当我添加它有效时

    -Xbootclasspath/a:PATH_To_lambok.jar
    

答案 2 :(得分:3)

我添加了-Xbootclasspath/a:lombok.jar naga1990 mentioned,但它仍然没有解决问题。使用-clean启动STS后,它确实有效。

答案 3 :(得分:1)

如果你已经尝试过其他方法,但它仍然无效,你可以试试这个:

如果您的项目是基于Maven的项目,则STS将其配置为 AspectJ功能,这将与 Lombok 冲突。

要解决此问题,请通过右键单击项目 - &gt;删除Aspects功能。 AspectJ工具 - &gt;删除AspectJ功能。希望这会奏效。

enter image description here

答案 4 :(得分:0)

我如下解决了... 1.下载了lombok的UI Swing应用程序...即lombok.jar 2.启动它并手动输入sts的路径,直到sts.exe,即包含sts.exe的完整文件夹 3.单击更新/安装 4.在执行以上所有3个步骤时,请确保sts根本没有运行。 5.启动STS 6.清理构建项目。

答案 5 :(得分:0)

如果是日食/ STS,则为 1.关闭您的SDK 2.下载龙目岛罐子 3.双击它或使用java.exe运行它 4.确保以下行应添加到.ini文件中        -javaagent:\ lombok.jar 5.如果缺少,请添加以下行        -Xbootclasspath / \ lombok.jar 6.打开您的SDK。转到“帮助”->“关于”。您应该在下面看到        “已安装了Lombok v1.18.6“ Enret Ferret”。https://projectlombok.org/” 7.清理您的项目。 8.重新构建。

答案 6 :(得分:0)

添加javaagent和Xbootclasspath值之后。完全关闭STS,然后重新开始。不要尝试重新启动,它将无法正常工作

答案 7 :(得分:0)

我遇到了同样的问题,事实证明,只有当我从之前创建的桌面快捷方式(安装loombok之前)启动STS时,lombok才起作用。我删除了快捷方式,然后再次创建它,而lombok正常运行。如果您使用快捷方式运行sts,请尝试此解决方案。