Я не могу интегрировать Hibernate Validator в проект javaweb, используя Spring Framework - PullRequest
2 голосов
/ 03 июня 2019

Я пытался добавить проверку гибернации в свой веб-проект, но если в проекте есть пакет jar: spring-context-indexer-5.0.6.RELEASE.jar, он будет вызван при запуске программыработает: java.lang.annotation.AnnotationFormatError: Дублирующая аннотация для класса Это исключение.Это предотвратит интеграцию проверки гибернации в мой веб-проект.Как я могу решить эту проблему?

 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()); 
    }

}

Если вы добавите в библиотеку jar spring-context-indexer-5.0.6.RELEASE, произойдет следующее исключение:

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, который я представил.

введите описание изображения здесь

Это всего лишь маленький случай.Поскольку проверка гибернации добавлена ​​в мой веб-проект, эти jar-пакеты неизбежно собираются вместе. Но я не знаю, как решить эту проблему, я надеюсь, что каждый может помочь.

1 Ответ

0 голосов
/ 05 июня 2019

Используете ли вы Eclipse или что-то другое, используя компилятор JDT из Eclipse?

Поскольку у меня возникла очень похожая проблема при работе с Hibernate Validator (я руководитель проекта HV).

Это происходит не со всеми тестами базы кода, но для некоторых просто заканчивается этой ошибкой.

При компиляции с использованием javac (например, с использованием Maven) тесты проходят правильно (и я даже могу запускать вещи из Eclipse, если это не JDT, компилирующий классы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...