我试图将hibernate验证添加到我的web项目中,但是如果项目中有一个jar包:spring indexer-5.0.6.RELEASE.jar,它将导致程序在运行时抛出: java.lang。annotation.AnnotationFormatError:这个异常类的重复注释。这将阻止我将hibernate验证集成到我的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.RELEASEJAR添加到库中,则会出现以下异常。
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包。
这只是个小案子。由于hibernate验证是添加到我的web项目中的,这些jar包不可避免地会将together.But放在这里--我不知道如何解决这个异常,我希望每个人都能提供帮助。
发布于 2019-06-05 13:45:02
您是在使用Eclipse,还是使用Eclipse中的JDT编译器?
因为我在处理Hibernate Validator (我是HV的项目负责人)时有一个非常类似的问题。
它不是发生在所有的测试代码库,但对一些人,它只是结束了这个错误。
当使用javac编译(例如使用Maven )时,测试会正确通过(我甚至可以从Eclipse运行一些东西,只要不是JDT编译类)。
https://stackoverflow.com/questions/56426644
复制相似问题