You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Java 24项目中如何为Maven指定ASM和Lombok版本?编译及依赖解析问题求助

Java 24项目中如何为Maven指定ASM和Lombok版本?编译及依赖解析问题求助

兄弟,我太懂你碰到这个Java 24 + Maven + Lombok/ASM的坑有多闹心了!我之前在新版本JDK上也踩过类似的依赖兼容烂摊子,给你捋几个实打实的解决步骤,应该能帮你把问题摆平:

  • 先把你手动塞进项目的jar包全删掉!Maven的核心就是统一管控依赖,手动加jar会彻底打乱它的依赖树逻辑,你现在碰到的“package lombok does not...”找不到的问题,十有八九是手动jar和Maven自动管理的依赖冲突搞出来的,先把这个源头掐掉。

  • 强制锁定兼容Java 24的ASM版本:Java 24对字节码做了不少更新,旧版ASM根本不认识这些新东西,这也是你一开始碰到那个[JAVAC][com.sun.tools.javac.code.TypeTag :: UNKNOWN] [24]编译错误的核心原因。你需要在pom.xml的dependencyManagement块里把ASM相关的版本都锁死,比如用支持Java 24的9.6版本:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
            <version>9.6</version>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
            <version>9.6</version>
        </dependency>
        <!-- 要是用到其他ASM子模块,比如asm-tree,也一起在这里锁定版本 -->
    </dependencies>
</dependencyManagement>
  • 把Lombok升级到支持Java 24的版本:目前Lombok 1.18.30及以上的版本已经适配了Java 24,而且一定要在Maven编译插件里把Lombok配置成注解处理器,不然还是会出问题。给你个完整的配置参考:
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.30</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.12.1</version> <!-- 这个版本完美支持Java 24 -->
            <configuration>
                <source>24</source>
                <target>24</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.30</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>
  • 最后清缓存重新构建:执行mvn clean install -U,这个命令会把Maven本地缓存的旧依赖全清掉,强制拉取新的兼容版本,避免残留的旧依赖搞事情。

另外多说一句,你最开始的那个编译错误,本质就是字节码处理工具跟不上Java 24的新特性,只要把ASM和Lombok都升级到兼容版本,那个UNKNOWN错误也会跟着消失的!

备注:内容来源于stack exchange,提问作者Juan Felipe Pérez

火山引擎 最新活动