操作系统或 Brew 更新后,Lombok 中的 @Slf4j 注释出现问题。梅文。春天。 MacOS

问题描述 投票:0回答:1

我遇到了 lombok.extern 库中的 @Slf4j 注释的意外问题。看来更新我的操作系统或 Homebrew 后,@Slf4j 注释已停止工作。

即使使用通过 Spring Initializer 创建的全新存储库,我也可以重现这个奇怪的问题。当我添加@Slf4j注释时,IDE能够识别所需的库。此外,项目在 IDE 中成功构建并运行,如屏幕截图所示。

IDE run

但是当我通过命令行构建时,它失败并出现错误。

CMD run

mvn --version
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937)
Maven home: /opt/homebrew/Cellar/maven/3.9.9/libexec
Java version: 23, vendor: Homebrew, runtime: 
/opt/homebrew/Cellar/openjdk/23/libexec/openjdk.jdk/Contents/Home
Default locale: en_AU, platform encoding: UTF-8
OS name: "mac os x", version: "14.6.1", arch: "aarch64", family: "mac"


pom data:
spring-boot-starter-parent: 3.3.4
java.version: 23
maven.compiler.source: 23
maven.compiler.target: 23
dependency: 
    spring-boot-starter
    lombok

我的所有其他项目都受到此问题的影响,并且它们使用相同组件的许多不同版本。对于问题的根本原因,我已经没有想法了。

我怀疑新版本Maven的更新可能是导致该问题的原因。但是,我无法选择恢复到旧版本

根据要求,提供pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.4</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>

<url/>
<licenses>
    <license/>
</licenses>
<developers>
    <developer/>
</developers>
<scm>
    <connection/>
    <developerConnection/>
    <tag/>
    <url/>
</scm>
<properties>
    <java.version>23</java.version>
    <maven.compiler.source>23</maven.compiler.source>
    <maven.compiler.target>23</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                    </exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

</project>

java version

更新1:我怀疑Maven在注释处理方面存在问题。 IntelliJ 做得很好。

更新2:看起来Lombok还不能与Java 23一起使用。例如:https://github.com/projectlombok/lombok/issues/3722

java spring-boot maven lombok
1个回答
0
投票

我通过全面切换到 Java 版本 21 解决了这个问题。这就是我所做的:

  1. 删除了 Maven 的 Homebrew 版本,该版本最初仅适用于 Java 23。
  2. 从 Homebrew 卸载 Java 23。
  3. 从 .gz 文件安装 Maven。
  4. 通过 Homebrew 安装了 OpenJDK 21。
© www.soinside.com 2019 - 2024. All rights reserved.