簡體   English   中英

創建名為 'org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean#0 的 bean 時出錯

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

我是休眠的新手,不太確定我的應用程序有什么問題。 所以我有這兩個模塊:核心和網站。

  • 模塊核心擁有所有實體、daos 和所有數據庫工作。 所有的 DAO 都繼承了一個 AbstractDAO。
  • Module Website 做所有前端的東西,比如jsps,mvc 控制器......它是一個支持spring 框架的maven 模塊。

我正在嘗試使用 ehcache 工廠實現二級緩存。 但是我收到此錯誤:

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.AbstractBeanFactory(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.bean .factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) org.springframework.beans.fa cctory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:725) org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) org.springframework.context.support.AbstractApplicationContext.refresh.Abs​​tractApplicationContext.refresh(AbstractApplicationContext.refresh.Abs​​tractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 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.valve.AbstractAccessLogValve.invoke(AbstractAccessLogValve.invoke(AbstractAccessLogValve.invoke) 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進程(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 章運行(TaskThread.java:61) java.lang.Thread.run(Thread.java:745)

當我添加 logback-classic.jar 時出現錯誤,但如果我刪除它,我會收到另一個錯誤。

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)

我不知道為什么會出現錯誤。 它表明存在一個 spring 框架錯誤,其中 spring 未在模塊 Core(所有 DAO 所在的模塊)中實現。 任何建議將不勝感激。 謝謝

如果您使用的是 hibernate-validator,就我而言,我只是添加了一個更多的依賴項,如下所示:(因為 javax.xml.bind 在 JAVA 9 及更高版本中默認不會在類路徑上可用,請參閱https://docs .oracle.com/javase/9​​/docs/api/java.xml.bind-summary.html )

驗證器還需要一個依賴項

我認為您不能將hibernate-validator 5.2.2 (用於 Hibernate 5)與 Hibernate 4 一起使用。嘗試使用hibernate-validator 4.2.0.Final

你的類路徑中有兩個ehcache jars!

嘗試使用 Maven 或 Gradle 構建來獲得有效的依賴關系。

你需要有所有需要的依賴

    <!-- 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>

您不需要刪除 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>

問題僅在於戰爭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM