Spring/Java8/Maven/Hibernate项目执行mvn hibernate:update报invalid constant type:19
解决Hibernate Maven插件执行
hibernate:update时的扫描错误 这个错误invalid constant type: 19本质是字节码版本不兼容:常量类型19对应INVOKEDYNAMIC,是Java 7引入的字节码指令,但你使用的Hibernate Maven插件依赖的ASM库版本过低,无法识别Java 8及以上的字节码特性。
以下是具体修复步骤:
1. 升级Hibernate Maven插件并适配ASM版本
确保pom.xml中使用的hibernate-maven-plugin为支持Java 8的版本(至少5.x及以上),同时显式指定适配的ASM依赖:
<build> <plugins> <plugin> <groupId>org.hibernate</groupId> <artifactId>hibernate-maven-plugin</artifactId> <version>5.6.15.Final</version> <configuration> <hibernateCfg>src/main/resources/hibernate.cfg.xml</hibernateCfg> </configuration> <dependencies> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> <version>9.5</version> </dependency> </dependencies> </plugin> </plugins> </build>
2. 锁定项目编译级别为Java 8
虽然mvn clean install能成功构建,但要确保编译插件的源码和目标版本严格为1.8,避免生成更高版本的字节码:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin>
3. 清理并重新执行插件命令
执行以下命令彻底清理旧编译产物,再运行Hibernate更新命令:
mvn clean mvn compile mvn hibernate:update
额外排查点
- 若项目依赖的第三方库包含Java 7+字节码特性,升级ASM依赖是最直接的解决方式;
- 避免使用4.x系列的Hibernate版本,该版本对Java 8的支持有限,建议升级到5.x稳定版。
内容的提问来源于stack exchange,提问作者devgit9227
相关产品推荐
相关产品推荐

