簡體   English   中英

javapoet如何生成注釋並使用lombok?

[英]How to generate annotations and use lombok with javapoet?

當我使用 javapoet 時,有什么方法(和任何意義)可以使用 Lombok?
這是示例:

TypeSpec typeSpec = TypeSpec
        .classBuilder("MyDtoWithLombok")
        .addModifiers(Modifier.PUBLIC)
        //.addAnnotation(NoArgsConstructor.class)
        //.addAnnotation(AllArgsConstructor.class)
        //.addAnnotation(Data.class)
        //.addAnnotation(Builder.class)
        .addField(...)
        .build();

當我嘗試添加 Lombok 注釋(像那樣 -> Data.class”)時,我收到以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: lombok/NoArgsConstructor
...
Caused by: java.lang.ClassNotFoundException: lombok.NoArgsConstructor
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 3 more

可能是因為 Lombok 通常被賦予了提供的范圍——你通常不希望它出現在類路徑中,因為它應該在編譯時被處理和刪除。

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

刪除<scope>provided</scope>行,或將其更改為compile 兩者是等價的,因為compile是默認設置。

我個人會明確地使用compile ,甚至可能會添加一條注釋來解釋您為什么不使用provided ,因為不經意的讀者可能會認為這是一個錯誤,並且可能會嘗試將其更改為再次provided

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM