我无法使用Spring框架将Hibernate Validator集成到javaweb项目中

时间:2019-06-03 11:44:37

标签: java web

我试图向我的Web项目中添加休眠验证,但是如果项目中有一个jar包:spring-context-indexer-5.0.6.RELEASE.jar,它将导致在程序执行时抛出该程序正在运行:java.lang。注解。AnnotationFormatError:类的注释重复此异常。这将阻止我将休眠验证集成到我的Web项目中。我该如何解决这个问题?

 package CarTest;

import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author 
 */
       class Car {
    @NotNull
    private String manufacturer;

    @NotNull
    @Size(min = 2, max = 14)
    private String licensePlate;

    @Min(2)
    private int seatCount;

    public Car(String manufacturer, String licencePlate, int seatCount) {
        this.manufacturer = manufacturer;
        this.licensePlate = licencePlate;
        this.seatCount = seatCount;
    }
    //getters and setters ...
}

public class CarTest {

    public static void main(String[] args) {
        // TODO code application logic here
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();
        Car car = new Car(null, "DD-AB-123", 4 );
    Set<ConstraintViolation<Car>> constraintViolations =     validator.validate(car);         
        System.out.println(constraintViolations.size());
        System.out.println("must not be null:-----"+constraintViolations.iterator().next().getMessage()); 
    }

}

如果将spring-context-indexer-5.0.6.RELEASE jar添加到库中,则会发生以下异常。

INFO: HV000001: Hibernate Validator 6.0.16.Final
Exception in thread "main" java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.NotNull: @javax.validation.constraints.NotNull(message={javax.validation.constraints.NotNull.message}, groups=[], payload=[])
    at sun.reflect.annotation.TypeAnnotationParser.mapTypeAnnotations(TypeAnnotationParser.java:360)
    at sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedTypeBaseImpl.<init>(AnnotatedTypeFactory.java:139)
    at sun.reflect.annotation.AnnotatedTypeFactory.buildAnnotatedType(AnnotatedTypeFactory.java:65)
    at sun.reflect.annotation.TypeAnnotationParser.buildAnnotatedType(TypeAnnotationParser.java:79)
    at java.lang.reflect.Field.getAnnotatedType(Field.java:1170)
    at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findCascadingMetaData(AnnotationMetaDataProvider.java:618)
    at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findPropertyMetaData(AnnotationMetaDataProvider.java:236)
    at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getFieldMetaData(AnnotationMetaDataProvider.java:225)
    at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.retrieveBeanConfiguration(AnnotationMetaDataProvider.java:133)
    at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfiguration(AnnotationMetaDataProvider.java:124)
    at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanConfigurationForHierarchy(BeanMetaDataManager.java:232)
    at org.hibernate.validator.internal.metadata.BeanMetaDataManager.createBeanMetaData(BeanMetaDataManager.java:199)
    at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanMetaData(BeanMetaDataManager.java:166)
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:157)
    at CarTest.CarTest.main(CarTest.java:47)

这是我介绍的jar包。

enter image description here

这只是一个小案例。因为休眠验证已添加到我的Web项目中,所以这些jar包不可避免地会放在一起。但是我不知道如何解决这种异常,希望大家能提供帮助。

1 个答案:

答案 0 :(得分:0)

您是使用Eclipse还是使用Eclipse的JDT编译器进行任何操作?

因为在使用Hibernate Validator时遇到了一个非常相似的问题(我是HV的项目负责人)。

并非所有代码库测试都发生这种情况,但是对于某些情况,它最终会出现此错误。

使用javac进行编译时(例如,使用Maven),测试可以正确通过(只要不是JDT编译类,我甚至可以从Eclipse运行)。

相关问题