Java 创建名为 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0 的 bean 时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/35986200/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 17:19:34  来源:igfitidea点击:

Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0

javahibernate

提问by S. H.

Im new to hibernate, and not quite sure what is wrong with my application. So i have these 2 modules: Core and Website.

我是休眠的新手,不太确定我的应用程序有什么问题。所以我有这两个模块:核心和网站。

  • Module core has all the entities, daos and all database work. all DAOs inherit an AbstractDAO.
  • Module Website does all the front end stuff like jsps, mvc controllers... It is a maven module that supports spring framework.
  • 模块核心拥有所有实体、daos 和所有数据库工作。所有的 DAO 都继承了一个 AbstractDAO。
  • Module Website 做所有前端的东西,比如jsps,mvc 控制器......它是一个支持spring 框架的maven 模块。

Im trying to implement second level cache using ehcache factory. however i'm receiving this error:

我正在尝试使用 ehcache 工厂实现二级缓存。但是我收到此错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:663) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:629) org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:677) org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:548) org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:489) org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) javax.servlet.GenericServlet.init(GenericServlet.java:158) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503) org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:745)

org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0”的bean时出错:init方法调用失败;嵌套异常是 java.lang.NoClassDefFoundError: 无法初始化类 org.hibernate.validator.internal.engine.ConfigurationImpl org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1568) org.springframework.beans。 factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540) org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) org.springframework.beans.factory.support.Abstract

The error appears when I add logback-classic.jar, but if i remove it i receive another error.

当我添加 logback-classic.jar 时出现错误,但如果我删除它,我会收到另一个错误。

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: ch/qos/logback/classic/selector/ContextSelector at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1287) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at com.before90.website.action.application.ControllerServlet.doService(ControllerServlet.java:28) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)

org.springframework.web.util.NestedServletException:处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError: ch/qos/logback/classic/selector/ContextSelector at org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1287) at org.springframework.web.servlet.DispatcherServlet。 doDispatch(DispatcherServlet.java:961) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at com.before90.website.action.application.ControllerServlet.doService(ControllerServlet.java:28) at org .springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java) :622)

I don't know why the error is appearing. it shows that there is a spring framework error, where spring is not implemented in module Core ( where all the DAOs are). Any advice would be much appreciated. Thanks

我不知道为什么会出现错误。它表明存在一个 spring 框架错误,其中 spring 未在模块 Core(所有 DAO 所在的模块)中实现。任何建议将不胜感激。谢谢

回答by Balaji Katika

You don't need to remove logback-classic.jar, Instead the root cause seems to be the missing definition for org.hibernate.validator.internal.engine.ConfigurationImpl As per Google, you need to include http://mvnrepository.com/artifact/org.hibernate/hibernate-validatorIf its a maven project then the below config in your pom dependencies shall make things work smooth for you

您不需要删除 logback-classic.jar,而是根本原因似乎是缺少 org.hibernate.validator.internal.engine.ConfigurationImpl 的定义根据 Google,您需要包含http://mvnrepository.com /artifact/org.hibernate/hibernate-validator如果它是一个 Maven 项目,那么 pom 依赖项中的以下配置将使您的工作顺利进行

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>

回答by v.ladynev

I don't think that you can use hibernate-validator 5.2.2(for Hibernate 5) with Hibernate 4. Try to use hibernate-validator 4.2.0.Final.

我认为您不能将hibernate-validator 5.2.2(对于 Hibernate 5)与 Hibernate 4 一起使用hibernate-validator 4.2.0.Final。尝试使用.

And there are two ehcachejars in your class path!

ehcache你的类路径中有两个jars!

Try to use Maven or Gradle build to get valid dependences.

尝试使用 Maven 或 Gradle 构建来获得有效的依赖关系。

回答by S. H.

The problem was with the WAR only.

问题仅在于战争。

回答by Hailin Tan

If you are using hibernate-validator, in my case, I just added one more dependency as below: (because javax.xml.bind will not be available on classpath by default in JAVA 9 and above, please refer to https://docs.oracle.com/javase/9/docs/api/java.xml.bind-summary.html)

如果您使用的是 hibernate-validator,就我而言,我只是添加了一个更多的依赖项,如下所示:(因为 javax.xml.bind 在 JAVA 9 及更高版本中默认不会在类路径上可用,请参阅https://docs .oracle.com/javase/9​​/docs/api/java.xml.bind-summary.html)

validator need one more dependency

验证器还需要一个依赖项

回答by Anup

You need to have all require dependency

你需要有所有需要的依赖

    <!-- JSR 303 Dependencies -->

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-annotation-processor</artifactId>
        <version>5.4.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-cdi</artifactId>
        <version>5.4.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.3.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b08</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>classmate</artifactId>
        <version>1.3.1</version>
    </dependency>