spring Javax 验证

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4302358/
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-09-08 04:14:05  来源:igfitidea点击:

Javax Validation

springvalidation

提问by mjgirl

I'm trying to use Javax Validation with Spring. When I run my application, I get this strange error message

我正在尝试在 Spring 中使用 Javax 验证。当我运行我的应用程序时,我收到这个奇怪的错误消息

javax.servlet.ServletException: Servlet.init() for servlet dispatcher threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    java.lang.Thread.run(Thread.java:619)

root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:291)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    java.lang.Thread.run(Thread.java:619)

root cause

java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl
    org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:43)
    javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
    org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:161)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1469)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1409)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:291)
    org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
    org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    java.lang.Thread.run(Thread.java:619)

I have hibernate-validator-4.0.2 GA.jar in my classpath which seems to have the missing class. I also use jdk 6. What is going wrong? I've googled, but no answer is found.

我的类路径中有 hibernate-validator-4.0.2 GA.jar,它似乎缺少类。我也用jdk 6. 出了什么问题?我用谷歌搜索,但没有找到答案。

回答by skaffman

The stack trace shows that the Hibernate Validator and javax.validationAPI JARs are both on your classpath OK, so the problem lies elsewhere.

堆栈跟踪显示 Hibernate Validator 和javax.validationAPI JAR 都在您的类路径中,OK,所以问题出在其他地方。

The source code for ConfigurationImplshows that it has a dependency on SLF4J.

的源代码ConfigurationImpl表明它依赖于 SLF4J。

I'm guessing that's not your classpath?

我猜这不是你的类路径?

回答by Christian Vielma

I solved it adding the following to the POM in a Maven project:

我解决了在 Maven 项目中将以下内容添加到 POM 中的问题:

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

You can also check the official reference.

您也可以查看官方参考

回答by amit petkar

Jar- hibernate-validator4.3.1 final.jar file- HibernetValidator.java line 41-

Jar- hibernate-validator4.3.1 final.jar 文件- HibernetValidator.java line 41-

 public Configuration<?> createGenericConfiguration(BootstrapState state) 
 {
    return new ConfigurationImpl(state);
 }

the ConfigurationImpl class has a static initializer block

ConfigurationImpl 类有一个静态初始化块

static
 {
     Version.touch();
     log = LoggerFactory.make();
  }

The LogFactory class refreences org.jboss.logging.Logger.

LogFactory 类重新定义了 org.jboss.logging.Logger。

So add jboss-logging-3.2.0.Final.jar to the dependencies and you are done.

因此,将 jboss-logging-3.2.0.Final.jar 添加到依赖项中,您就完成了。

回答by Neal Donnan

Check that the hibernate-validator-4.0.2 GA.jar is deployed in the WEB-INF/lib directory of your web application on the server.

检查 hibernate-validator-4.0.2 GA.jar 是否部署在服务器上 Web 应用程序的 WEB-INF/lib 目录中。

回答by mjgirl

Found the solution. My slf4j jar versions were not matching together, aswell as I had the undirect libraries.

找到了解决办法。我的 slf4j jar 版本不匹配,以及我有非直接库。

回答by Joseph

I had two version of slf4j-apiin my classpath - slf4j-api-1.6.1.jaras well as slf4j-api-1.5.8.jar. I removed the latter and that solved my issue with

slf4j-api我的类路径中有两个版本-slf4j-api-1.6.1.jar以及slf4j-api-1.5.8.jar. 我删除了后者并解决了我的问题

"java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine.ConfigurationImpl".

回答by MosheElisha

For me, it was a missing "jboss-logging" jar

对我来说,这是一个缺失的“jboss-logging”jar

回答by OlgaMaciaszek

You might have clashing versions of hibernate-validatorand validation-api. You can read more about it in this issue:

您可能会遇到争食版本hibernate-validatorvalidation-api。您可以在本期中阅读更多相关信息:

JPA 2.0 : Exception to use javax.validation.* package in JPA 2.0

JPA 2.0:在 JPA 2.0 中使用 javax.validation.* 包的异常

If you want to use the most recent hibernate-validatorversion, then you should remove the validation-apidependency and just add the following dependency for hibernate-validator:

如果您想使用最新hibernate-validator版本,那么您应该删除validation-api依赖项,只需添加以下依赖项即可hibernate-validator

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

回答by Byju Joy

I had same problem.Solved it by adding following dependency, eventhough not using hibernate as such.

我有同样的问题。通过添加以下依赖项解决了它,即使没有使用休眠。

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.1.0.Beta1</version>
        </dependency>