当前位置: 首页 > 知识库问答 >
问题:

Javadoc在使用Lombok的@Builder注释时出现“找不到符号”错误

赫连泰宁
2023-03-14

我有一个类,如下所示:

@Data
@Builder
public class Foo {
    private String param;

    /** My custom builder.*/
    public static FooBuilder builder(String _param){
        return builder().param(_param);
    }
}

我得到以下错误:

[错误]无法执行目标组织。阿帕奇。专家插件:maven javadoc插件:2.10。4:project foo上的javadoc(默认cli):JavaDocs报告生成中发生错误:
[错误]退出代码:1-/home/workspace/foo/src/main/java/com/foo/foo。java:34:错误:找不到symbol
[error]公共静态FooBuilder生成器(字符串参数)
[error]^
[error]符号:类FooBuilder
[error]位置:类Foo

共有3个答案

劳鹏云
2023-03-14

使现代化

如果您使用maven javadoc插件3.2。0您可以这样配置它:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
      <doclint>none</doclint>
    </configuration>
  </plugin>

doclint配置将使javadoc插件不再抛出错误。它还将禁用lint,但如果您同意,这可能是代替delombok的最佳方式。

如果您使用任何CI工具来构建和编译您的项目,您可以创建一个单独的作业来检查javadoc lint。

对我来说,在构建中禁用lint并不是一件坏事。Javadoc很重要,但不应该因为我在使用Lombok而阻止我构建应用程序。

吴欣然
2023-03-14

为了解决这个问题,我必须使用Lombok的delombok特性(参见:https://projectlombok.org/features/delombok)。

lombok不包括所有工具。例如,lombok无法插入javadoc。。。在java源代码上运行。Delombok仍然允许您通过将java代码预处理为java代码并应用lombok的所有转换,将lombok与这些工具一起使用。

我通过添加以下插件使用Maven做到了这一点:

<plugin>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok-maven-plugin</artifactId>
    <version>1.18.0.0</version>
    <configuration>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <outputDirectory>${delombok.output}</outputDirectory>
        <addOutputDirectory>false</addOutputDirectory>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>delombok</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.9</version>
    <configuration>
        <sourcepath>${delombok.output}</sourcepath>
    </configuration>
</plugin>
罗鸿福
2023-03-14

Lombok实际上能够填充一个部分定义的构建器类,因此您可以声明足够多的构建器,以使Javadoc满意,并将其保留。不需要去德隆博克。

在这种情况下,以下几点对我起了作用:

@Data
@Builder
public class Foo {
    private String param;

    /** My custom builder.*/
    public static FooBuilder builder(String _param){
        return builder().param(_param);
    }

    public static class FooBuilder {}

}

旁注:您实际上可以使用此技术添加一些customer builder方法,因此它具有额外的功能。当我有集合时,我喜欢重载构建器方法,以便一次只能加载一个项。可能已经有一些技术可以做到这一点,但很高兴知道您可以手动改进构建器。

 类似资料:
  • 我试图在Android Studio中使用Doclava为Android库生成Javadoc。源代码在某些时候使用了“Nullable”标记,这会在生成javadoc时导致崩溃: 在doclet类com中。谷歌。多克拉瓦。Doclava,方法start引发了一个异常java。朗。反思。调用TargetException com。太阳工具。javac。密码Symbol$CompletionFailu

  • 我想有一种简单的方法来构建测试数据,并发现生成器模式非常适合这里描述的情况。然而,为了减少组件测试中的样板代码,甚至更多,我发现来自龙目岛项目的@Builder是一个很好的候选人。然而,我找不到任何关于如何在方法上使用它的留档或在线示例。我想在某种工厂方法上使用,因为我不能对实现进行任何更改。 有人能举例说明如何在方法上实际使用?

  • 问题内容: 我第一次使用Project Lombok,运行构建时通过maven编译项目时遇到问题,我收到错误,其中调用了用Project Lombok注释进行注释的方法。 这是带注释的参数: 例如,在此行中,maven破坏了构建: 这是我的Maven依赖 Maven错误: 我正在使用Java 8 问题答案: 我已经将lombok降级到1.14.8,该版本可与Maven构建一起使用,但我还没有找到为

  • 我正在创建一个程序,用户(教师)在其中输入一组百分比分数,并对这些分数进行分析,输出框打印出平均值、最小值/最大值、范围和“R级”、“1级”、“2级”等分数。 我面临的问题是将分数分为不同级别的方法。当我尝试将数组返回到main方法,并尝试将其打印到输出时,我得到了一个数组错误,即“找不到符号” 因此,当我使用主方法打印所有信息时,我应该将levelCount数组放入另一个数组中,我做到了。以下是

  • 错误是 项目和模块SDK都是Java11。龙目岛版本为1.18.2: maven编译器安装程序: null

  • 我试图将Stripe Java库与JSP Java servlets一起使用。 我已经将以下库导入servlet AcceptPaymentRequest.java中: 我的pom.xml如下: 找不到符号:class APIException位置:package com.stripe.exception 任何帮助都很感激。