Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl解决!

说明

详细错误日志:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl
    at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33)
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)
    at org.springframework.boot.validation.MessageInterpolatorFactory.getObject(MessageInterpolatorFactory.java:53)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor$ValidatedLocalValidatorFactoryBean.<init>(ConfigurationPropertiesBindingPostProcessor.java:411)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.getValidator(ConfigurationPropertiesBindingPostProcessor.java:368)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.determineValidator(ConfigurationPropertiesBindingPostProcessor.java:352)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:314)
    at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:291)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)

本来这种NoClassDefFoundError、NullPointerException之类的异常都没有任何解决问题的价值,更没有必要单独写一篇博客来介绍这个问题;但是确实还是想吐槽一下~

问题来源

本工程采用了maven构建,查看maven依赖树的时候发现很多logging冲突,自然而然的利用<exclusion>把不必要的依赖项给去除掉,所有就有了这么一段配置:

 <exclusion>
         <groupId>jboss-logging</groupId>
         <artifactId>org.jboss.logging</artifactId>
  </exclusion>

加上我的hibernate-validator的版本是5.3.5.final,下意识的解决方法就是换个4.3.5版本的包解决就够了。确实是,换个版本就完美解决了.但是我还是想探个究竟,看是什么妖魔在作怪!!classpath下也有这个类ConfigurationImpl,但就是创建对象失败!

下面开始定位

jboss.logging下就这么几个类:


image.png

莫非ConfigurationImpl强依赖了其中的某个Log?,而不是slf4j/log4j/logback之类的,哪怕你用common-logging也不至于报创建对象失败。果不其然,请看:


image.png

链进去看一下:
image.png

瞬间有一种想打人的冲动,在hibernate-validator一个公共组件里竟然加入自己的日志模板!不得不佩服大佬们的做法~ 不过问题解决就好了!

总结

遇到这个问题,没有立马反应过来,还是花了10来分钟查看问题。说明自己还有待提升,至少从日志的设计层面又加深了一层认识。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 你们是三胞胎,初中未见其人,却听其名多遍。 我们相遇在初中是你告诉我的,上高中时我才知道是校友,但...
    泡沫_33af阅读 760评论 0 0
  • 一、前言 spring-boot模块提供了一些特性用来支持springboot中其他模块,这些特性包含如下: Sp...
    阿里加多阅读 3,717评论 0 5
  • 拍珠宝、拍首饰、拍服装用什么器材? 其实我想和你说的不是相机,其实最重要的是灯光,你需要去搞一个影室灯,室内的室,...
    大摄影视界阅读 3,688评论 0 0
  • 这个季节,有淡淡的桂花香气弥漫在空气里,和着徐徐划过脸庞的微风,还有散落在风中的雨滴。我喜欢这样的季节,安静而美好...
    枫叶凡阅读 1,664评论 0 2