微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 JDK 1.8.265

如何解决在 JDK 1.8.265

我收到

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.valueextraction.ValueExtractorManager

当使用 JDK 版本 1.8.0_265 并且在我的 Spring Boot 应用程序的 Maven 依赖项中具有一个或多个 DL4J 依赖项(版本 1.0.0-beta7)时。 JDK v1.8.0_272 不会出现此错误

我的应用程序在 Spring Boot 2.3.7.RELEASE 上运行。我检查了 DL4J 依赖项并在下面列出了导致此异常的依赖项:

<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-core</artifactId>
    <version>1.0.0-beta7</version>
</dependency>
<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>arbiter-deeplearning4j</artifactId>
    <version>1.0.0-beta7</version>
</dependency>
<dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-ui-model</artifactId>
    <version>1.0.0-beta7</version>
</dependency>

这在使用 JDK (AdoptOpenJDK) v.1.8.265 的 Linux 和 Windows 上都会发生,但它在 JDK v1.8.272 上运行良好

坚持 265 版本对我们来说有点关键,在应用程序中停止使用 Hibernate 是不可能的。

无法共享完整的堆栈跟踪,因为它与项目代码相关,但抛出此异常的地方之一是在实例化 javax.validation.Validation 时:

Validation.buildDefaultValidatorFactory().getValidator();      // this line causes NoClassDefFoundError

我运行了 mvn dependencies:tree 并且没有显示整个项目的 Hibernate 依赖项,所以我假设上面的依赖项使用旧版本的 Hibernate,这会导致错误,因为它与 Spring 的 Hibernate 冲突,但这只是一个假设,因为它肯定和JDK有关系。

有没有办法在不迁移到新 JDK 的情况下确定问题的确切原因并修复它?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。