【问题标题】:Line Numbers Generation with Lombok使用 Lombok 生成行号
【发布时间】:2016-06-19 14:07:55
【问题描述】:

java 类中使用lombok 会导致stacktrace 中的行号错误吗? 假设:代码上没有使用delombok

Lombok 不会以line number generation 中断,但它会在放置注释的任何位置生成代码。这些行号。将是字节码的一部分,因此在打印stacktrace 时,它将包含错误的行号。我的上述解释正确吗?

【问题讨论】:

    标签: java lombok


    【解决方案1】:

    Java编译器根据.java源代码文件的实际行数将行号存储在.class文件中。

    Lombok 挂钩到编译过程本身,即时修改写入.class 文件的字节码。它实际上从未将文本添加到.java 源文件,它也不会更改编译器存储在.class 文件中的行号信息。

    因此,堆栈跟踪中的行号始终与实际的 Java 源代码匹配。


    注意:这个问题排除了“delombok”的情况。对于感兴趣的读者:您可以使用“delombok”插件生成简单的.java 代码,该代码包含 Lombok 在编译过程中会放入的所有内容。该工具适用于从代码库中删除 Lombok 或将源代码提供给被 Lombok 内容混淆的分析工具等情况。在这种情况下,您最终会得到不同的、更大的 .java 源文件,它们当然有不同的行号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-16
      • 2021-09-19
      • 2023-01-17
      • 2014-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      相关资源
      最近更新 更多