【问题标题】:Lombok and STS issue - Method undefinedLombok 和 STS 问题 - 方法未定义
【发布时间】:2015-05-27 09:30:35
【问题描述】:

我有基于 Eclipse Luna 4.4.1 的 STS 版本 3.6.3.SR1。

我做了以下步骤:

  1. 下载并运行 Lombok 可运行 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 和其他Lombok 注释注释的Java 类的轮廓。我可以看到生成的 getter 和 setter。甚至自动辅助也会显示该方法。
  5. 我进行了 Maven → 更新项目,甚至还进行了项目清理
  6. 从“帮助”的“关于 STS”确认 Lombok 也已安装。

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

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

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

我的pom.xml 也有以下条目:

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

我该如何解决?

P.S:我下载了基于 STS 构建的 Eclipse Kepler 以启用 JBoss Fuse Tooling。

【问题讨论】:

  • 嗯,有时您必须以管理员身份启动 eclipse/STS,然后清理并重建项目。这对我有帮助。我刚试过这个,它奏效了。我也对上述解决方法感到恼火。祝你好运!为时已晚,但可能对其他人有所帮助。
  • 酷。我同时切换到 IntelliJ 并从那时起一直在使用 :) 由于管理员权限由组织管理,因此无法尝试。不过谢谢。

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


【解决方案1】:

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

  1. 转到the Lombok page 并下载并双击jar 并安装到您的IDE 中。
  2. 之后,打开.ini文件,看看它是否有javaagentXbootclasspath变量。

就我而言,Xbootclasspath 丢失了,当我添加它时,它起作用了。


-Xbootclasspath/a:PATH_To_lambok.jar

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这对我有用。在 Linux 上,转到包含 STS 文件的文件夹,然后在控制台上运行 ./STS -clean。我猜在 Windows 中,它与 .exe 相同
    【解决方案3】:

    我有一个类似的问题,通过更改 pom.xml 文件中的 Lombok 依赖项的范围得到了解决。

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

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

    【讨论】:

    • 谢谢,这对我也有帮助。多谢!
    【解决方案4】:

    如果你已经尝试过其他方法,但还是不行,你可以试试这个:

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

    要解决这个问题,请通过右键单击项目 -> AspectJ 工具 -> 删除 AspectJ Capability 来删除 Aspect Capability。希望这会奏效。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

        如果用于 eclipse/STS 1.关闭你的sdk 2.下载lombok jar 3.双击它或用java.exe运行它 4. 确保下面的行应该被添加到 .ini 文件中 -javaagent:\lombok.jar 5.如果缺少请添加以下行添加自己 -Xbootclasspath/\lombok.jar 6.打开你的sdk。转到帮助->关于。你应该看到下面的行 “龙目岛v1.18.6《羡慕雪貂》安装完毕。https://projectlombok.org/” 7. 清理你的项目。 8. 重新构建它。

        【讨论】:

          【解决方案7】:

          尝试关闭您的项目,再次打开并检查。它对我有用。

          【讨论】:

            【解决方案8】:

            添加 javaagent 和 Xbootclasspath 值后。完全关闭 STS 并重新启动。不要尝试重新启动,它不会工作

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-10-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多