【问题标题】:Building with Lombok's @Slf4j and Eclipse: Cannot find symbol log使用 Lombok 的 @Slf4j 和 Eclipse 构建:找不到符号日志
【发布时间】:2013-05-13 17:25:38
【问题描述】:

我在Eclipse中有lombok插件并在java编译器下启用了Eclipse中的注释处理,但是当我使用@Slf4j注释时仍然无法识别日志语句。

我们是否需要进行任何其他设置?

【问题讨论】:

  • Lombok 在字节码中生成实际方法。看一下 Slf4j 注释。它在寻找方法/领域吗? Lombok 应该在此命中之前编译。确保为 Lombok 正确设置了 eclipse。
  • 你能告诉我确保“Lombok 已正确设置 Eclipse”是什么意思。
  • 您是否通过安装程序安装了 Lombok?确保“@Data”POJO 显示 getter/setter/toString 的方法。 Lombok 使字节码编译方法。这就是它的“魔法”。这就是为什么我猜测它没有安装(只是猜测)
  • 你说的很对!!谢谢你的帮助。我从来没有意识到我们需要单独安装 lobmbak。下载 lombak jar 并手动安装.. 成功了..

标签: eclipse slf4j lombok


【解决方案1】:

您还必须将 Lombok 安装到 Eclipse 中。

另请参阅this answer,了解如何执行此操作或检查 Lombok 是否安装正确。

完全披露:我是Project Lombok 开发人员之一。

【讨论】:

  • 为什么不能像m2 eclipse插件一样?
  • 我添加以删除我的 STS.ini 文件的条目并重新启动 Eclipse。 Lombok 一直在努力打造它。
  • 我不知道你所说的“像 m2 eclipse 插件”是什么意思,但是 lombok 不能成为常规插件,因为我们修改现有的 eclipse 代码而不是添加新功能。我们需要更改 eclipse java 解析器和编译器的字节码以允许代码完成等。否则我们将不得不更换整个 java 开发工具。
  • @RoelSpilker 我已经围绕日志编写了我的包装器,我想使用我的包装器实现。我如何使用注释来做到这一点???
  • 如果我的项目是 maven 项目,为什么即使在 pom 中添加了 lambok jar 作为依赖项后,我仍然需要一个 eclipse 插件?我不明白原因...
【解决方案2】:

即使在安装了 Lombok 之后,我也遇到了同样的错误。对我来说,解决方案是在我的课程中添加另一个 lombok 注释(我使用 @Data),之后 eclipse 错误消失了。也许这股力量刷新了一些缓存。

当然,后来我只是简单地删除了@Data注解。

【讨论】:

  • 感谢您的回答。我能够通过运行干净的构建来解决我的问题。我的问题不在于 IDE,而在于构建本身。
  • 我试过这个。但它仅解决了该特定类文件中的错误。
【解决方案3】:

在我的 STS 环境中,我在 log 和 @Slf4j 上也遇到了类似的问题。为了解决这个问题,这是我在 spring 工具套件(sts-4.4.0.RELEASE)和 lombok-1.18.10.jar(mavenrepository 中提供的当前最新版本)上所做的。

  1. 如果有 maven 项目,请确保添加了 lombok 依赖项。否则,您需要手动将 jar 添加到项目类路径中。

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> <scope>provided</scope> </dependency>

  2. 清理构建 maven 应用程序。默认情况下,这将从 maven 存储库下载您的 .m2 位置的 lombok jar。 路径为org\projectlombok\lombok\1.18.10\

  3. 现在打开命令提示符并导航到 lombok 路径并执行命令java -jar lombok-1.18.10.jar

    C:\xxx\xxx\org\projectlombok\lombok\1.18.10&gt;java -jar lombok-1.18.10.jar

  4. 打开 lombok 对话框。如果看到消息Can't find IDE 点击Specify location... 提供您的 STS 根位置的路径

    我的情况是 C:\apps\sts-4.4.0.RELEASE\SpringToolSuite.exe

    Install/Update

  5. 安装成功 点击退出安装程序

  6. 现在在资源管理器中导航到您的 STS 根路径。 C:\apps\sts-4.4.0.RELEASE\ 我们看到lombok.jar放在sts根路径下 现在在记事本中编辑SpringToolSuite4.ini 文件 我们看到末尾附加了以下内容

    -javaagent:C:\apps\sts-4.4.0.RELEASE\lombok.jar

  7. 使用SpringToolSuite4.exe 启动 STS 清理,重建您的项目。

【讨论】:

  • 这就像一个魅力!非常感谢!起初我没有循环 STS,但一旦我退出并重新启动,我就能够清理、构建和启动应用程序。
  • 也为我工作!非常感谢!
  • 我遵循了所有这些步骤,它也对我有用!!感谢您的步骤。 @vinsinraw
【解决方案4】:

这通过添加 slf4j 依赖项解决了我的问题,Lombok 可以识别 slf4j 但无法下载,如果您使用的是 spring boot,那么对于 java 项目来说确实如此,那么默认情况下会出现 slf4j。

这是我的依赖项

    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>




    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.6</version>
        <scope>provided</scope>
    </dependency>

【讨论】:

    【解决方案5】:

    所以和其他人一样,我也面临这个问题。以下是我所做的。

    1. 按照here 的说明安装了 lombok.jar。
    2. 尝试重新启动 Eclipse。 (没用)
    3. 尝试刷新 gradle 项目。 (没用)
    4. 尝试了 Hervian 在他的回答 here 中的建议。 (没用)
    5. 关闭项目,从工作区中删除,然后重新导入。砰!工作。

    【讨论】:

    • 关闭、删除和重新导入 work4ed 就像一个魅力
    猜你喜欢
    • 2013-01-29
    • 2016-05-02
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    相关资源
    最近更新 更多