spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数。

hibernate-validator版本:5.0.2.Final

validation-api 版本:1.1.0.Final

model类中有个名为order_time的属性用@NotEmpty注解:

  1. package com.emax.paycenter.dto.external;
  2.  
  3. import org.hibernate.validator.constraints.NotEmpty;
  4. import org.hibernate.validator.constraints.URL;
  5. import javax.validation.constraints.Min;
  6. import javax.validation.constraints.NotNull;
  7. import java.io.Serializable;
  8.  
  9. /**
  10. * 扫码支付 Request Model
  11. * Created by 云龙 on 2017/6/1.
  12. */
  13. public class QRCodeRequest extends BaseRequest {
  14.  
  15. private static final long serialVersionUID = -3640955104188613350L;
  16.  
  17. /**
  18. * 订单号
  19. */
  20. @NotNull(message = "order_no不能为空!")
  21. private String order_no;
  22. /**
  23. * 支付金额,以分为单位
  24. */
  25. @Min(value = 1,message = "pay_money最小值1!")
  26. public int pay_money;
  27. /**
  28. * 接收支付中心通知的URL,需给绝对路径,
  29. * 255字符内格式如:http://wap.tenpay.com/tenpay.asp,
  30. * 确保支付中心能通过互联网访问该地址
  31. */
  32. @URL(protocol="http",message="notify_url无效的URL地址!")
  33. @NotNull(message = "notify_url不能为空!")
  34. private String notify_url;
  35. /**
  36. * 订单时间(格式:yyyyMMddHHmmss)
  37. */
  38. @NotEmpty(message = "order_time不能为空!")
  39. private String order_time;
  40. /**
  41. * 商品名称
  42. */
  43. @NotNull(message = "goods_name不能为空!")
  44. private String goods_name;
  45. /**
  46. * 备注
  47. */
  48. private String remark;
  49. /**
  50. * 几分钟有效
  51. */
  52. private String valid_minutes;
  53. /**
  54. * 支付渠道 酷宝支付, 青岛中信
  55. */
  56. @NotNull(message = "third_pay_platform不能为空!")
  57. private String third_pay_platform;
  58. /**
  59. * 支付通道类型(12:微信扫码,22:支付宝扫码)
  60. */
  61. @NotNull(message = "pay_channel不能为空!")
  62. private int pay_channel;
  63.  
  64. /**
  65. * getter/setter
  66. */
  67.  
  68. }

编写如下testcase方法:

  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = "classpath:spring/applicationContext.xml")
  3. public class ValidatorTest {
  4. @Autowired
  5. private Validator validator;
  6.  
  7. @Test
  8. public void NotEmptyTest() throws Exception {
  9. QRCodeRequest request=new QRCodeRequest();
  10. request.setOrder_time("");
  11.  
  12. try {
  13. BeanValidators.validateWithException(validator, request);
  14. } catch (RuntimeException e) {
  15. System.out.println("validerror:" + e.getMessage());
  16. }
  17. }
  18. }

run时报错:

  1. java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException
  2.  
  3. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
  4. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
  5. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:120)
  6. at org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator.interpolate(LocaleContextMessageInterpolator.java:49)
  7. at org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
  8. at org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
  9. at org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
  10. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
  11. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
  12. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateComposingConstraints(ConstraintTree.java:233)
  13. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:102)
  14. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
  15. at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
  16. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
  17. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
  18. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
  19. at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
  20. at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
  21. at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:199)
  22. at com.emax.paycenter.utils.BeanValidators.validateWithException(BeanValidators.java:39)
  23. at com.emax.paycenter.backend.dao.mapper.BankCodeMapperTest.NotEmptyAttributeTest(BankCodeMapperTest.java:50)
  24. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  25. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  26. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  27. at java.lang.reflect.Method.invoke(Method.java:606)
  28. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  29. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  30. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  31. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  32. at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
  33. at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
  34. at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
  35. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
  36. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
  37. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
  38. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
  39. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
  40. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
  41. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
  42. at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
  43. at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
  44. at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
  45. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
  46. at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
  47. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  48. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  49. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  50. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  51. Caused by: java.lang.ClassNotFoundException: javax.el.PropertyNotFoundException
  52. at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  53. at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  54. at java.security.AccessController.doPrivileged(Native Method)
  55. at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  56. at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  57. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  58. at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  59. ... 48 more

java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException

有时报下面异常=========================================

  1. java.lang.NoClassDefFoundError: javax/el/ELContext
  2. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)
  3. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateMessage(ResourceBundleMessageInterpolator.java:187)
  4. at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolate(ResourceBundleMessageInterpolator.java:120)
  5. at org.springframework.validation.beanvalidation.LocaleContextMessageInterpolator.interpolate(LocaleContextMessageInterpolator.java:49)
  6. at org.hibernate.validator.internal.engine.ValidationContext.interpolate(ValidationContext.java:370)
  7. at org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolation(ValidationContext.java:284)
  8. at org.hibernate.validator.internal.engine.ValidationContext.createConstraintViolations(ValidationContext.java:246)
  9. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateSingleConstraint(ConstraintTree.java:289)
  10. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:133)
  11. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateComposingConstraints(ConstraintTree.java:233)
  12. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:102)
  13. at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91)
  14. at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85)
  15. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478)
  16. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424)
  17. at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388)
  18. at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340)
  19. at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:158)
  20. at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:199)
  21. at com.emax.paycenter.utils.BeanValidators.validateWithException(BeanValidators.java:39)
  22. at com.emax.paycenter.backend.dao.mapper.BankCodeMapperTest.NotEmptyAttributeTest(BankCodeMapperTest.java:50)
  23. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  24. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  25. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  26. at java.lang.reflect.Method.invoke(Method.java:606)
  27. at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
  28. at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
  29. at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
  30. at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
  31. at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
  32. at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
  33. at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
  34. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
  35. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
  36. at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
  37. at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
  38. at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
  39. at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
  40. at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
  41. at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
  42. at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
  43. at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
  44. at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
  45. at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
  46. at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
  47. at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
  48. at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
  49. at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
  50. Caused by: java.lang.ClassNotFoundException: javax.el.ELContext
  51. at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  52. at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  53. at java.security.AccessController.doPrivileged(Native Method)
  54. at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  55. at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  56. at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
  57. at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  58. ... 48 more

java.lang.NoClassDefFoundError: javax/el/ELContext

解决办法:

  • 找同事协助,尝试引入jstl,不奏效。
  • 属性不用NotEmpty注解,改用NotBlank注解。(其实,我们所需的验证项正是NotBlank,而非NotEmpty)
  • 参考http://blog.csdn.net/bsg_24/article/details/49494975,将hibernate validator的版本降到4.3.1.Final。

hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException的更多相关文章

  1. springboot启动tomcat报错java.lang.NoClassDefFoundError: javax/el/ELManager仅记录

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'o ...

  2. Tomcat启动报错java.lang.ClassNotFoundException: javax.el.ExpressionFactory

    严重: Context initialization failedorg.springframework.beans.factory.BeanCreationException: Error crea ...

  3. 执行quartz报错java.lang.NoClassDefFoundError: javax/transaction/UserTransaction

    使用maven ,可以在 http://mvnrepository.com 中去查找 pom 配置如何写 <!-- https://mvnrepository.com/artifact/org. ...

  4. IDEA启动Springboot时,解决报错java.lang.NoClassDefFoundError: javax/servlet/Filter

    如下所示,将spring-boot-starter-tomcat依赖中的<scope>provided</scope>注释掉 <dependency> <gr ...

  5. Intellij IDEA 报错java.lang.NoClassDefFoundError

    Intellij IDEA 报错java.lang.NoClassDefFoundError 11-Aug-2018 23:48:24.686 严重 [http-nio-8080-exec-5] or ...

  6. Spring boot Unable to start embedded Tomcat报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()

    Spring boot Unable to start embedded Tomcat 报错 java.lang.NoSuchMethodError: javax.servlet.ServletCon ...

  7. 解决:启动项目报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

    前言:项目在 spring-mvc.xml 文件中配置了上传文件拦截,结果启动报错 java.lang.NoClassDefFoundError: org/apache/commons/fileupl ...

  8. 公司拷贝回家的工程用sts导入clean package报错java.lang.NoClassDefFoundError

    从公司拷贝工程回家加班,用相同版本的sts和jdk但是run as    maven build   clean package 总是报错java.lang.NoClassDefFoundError: ...

  9. 解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level

    解决spring boot启动报错java.lang.NoClassDefFoundError: ch/qos/logback/classic/Level 学习了:https://blog.csdn. ...

随机推荐

  1. <转>记dynamic的一个小坑 -- RuntimeBinderException:“object”未包含“xxx”的定义

    →转载地址← 创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问它,代码如下: namespace ConsoleApplication1 { class Program { ...

  2. [No0000176]Git常用命令速查表(收藏大全)

    名词 master: 默认开发分支 origin: 默认远程版本库 Index / Stage:暂存区 Workspace:工作区 Repository:仓库区(或本地仓库) Remote:远程仓库 ...

  3. [No0000116]SQLServer启用sa账户

    SQLServer如何启用sa账户,今天在这里唠叨一下关于SQL Server数据库如何启用sa账户的,作为一个数据库管理者,需要非常熟练掌握,具体步骤如下: 1.先登录数据库服务 首先在“开始”菜单 ...

  4. MongoDB win10 安装教程(zip)

    1.创建文件夹,如下: D:\Program File\mongodb D:\Program File\mongodb\data D:\Program File\mongodb\data\db D:\ ...

  5. linux文件系统扩展属性

    翻译自man手册,水平有限,有错还望不吝指出.... 扩展属性是与文件和目录相关的name:value对,用来提供文件系统的一些附加功能,例如ACL.对文件或是目录拥有读权限的用户可以看到其扩展属性. ...

  6. 添加字体与字符集locale支持(基于busybox文件系统)

    添加字体与字符集(基于busybox文件系统) 2011-10-11 14:07:32 分类: LINUX 1.添加字体 下面以文泉驿为例 $ mkdir  -p  rootfs/usr/share/ ...

  7. [hardware][intel] intel全系列网卡调研

    除了公司用,我自己还要买一块家用. 但是在这一切开始之前,还需要搞清楚PCIE到底咋回事. 一, 总线 https://zh.wikipedia.org/wiki/%E6%80%BB%E7%BA%BF ...

  8. Window ferformance toolkit 学习

    1.环境配置 2.内存泄露 a. 编写自己的wprp文件: http://msdn.microsoft.com/en-us/library/hh448223.aspx b.启动 @echo off s ...

  9. LeetCode 283 Move Zeroes 解题报告

    题目要求 Given an array nums, write a function to move all 0's to the end of it while maintaining the re ...

  10. Java基础知识之集合

    Collection集合 特点:长度可变,只能存储引用类型,可以存储不同的类型的元素 list 特点:元素有序(存储和取出的顺序一致),元素可以重复.list除了可以用迭代器循环遍历之外,因为其是有序 ...