Не удалось запустить quarkus: java.lang.ArrayIndexOutOfBoundsException: 1

Приложение Quarkus (0.19.1), созданное из артефакта QuarkEE, не запускается с:

[io.qua.dev.DevModeMain] Failed to start quarkus: java.lang.ExceptionInInitializerError ..
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at io.quarkus.hibernate.validator.runtime.HibernateValidatorRecorder

ИЗМЕНИТЬ. Я открыл для этого заявку: https://github.com/quarkusio/quarkus/issues/3284


person Petr Hunka    schedule 18.07.2019    source источник


Ответы (1)


Основная причина - ограничение javax.validation.constraints.NotNull проверки bean-компонента статического фабричного метода класса enum. Упрощенный пример:

public enum Gender {
    MALE,
    FEMALE;

    public static Gender fromCode(@NotNull String code) {
        return Gender.valueOf(code);
    }
}

и имея эту зависимость в вашем pom:

    <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-hibernate-validator</artifactId>
    </dependency>

Смущает то, что статические фабричные методы на простом классе POJO работают.

Примечание. Мне известно, что проверка статических методов не поддерживается спецификацией Bean Validation. Это просто подсказка для IDE.

Java EE 8 Проверка конструкторов и методов. Ограничения проверки компонентов могут быть наложены на параметры нестатических методов и конструкторов и на возвращаемые значения нестатических методов. Статические методы и конструкторы не будут проверяться.

person Petr Hunka    schedule 18.07.2019
comment
Не могли бы вы открыть проблему Quarkus на GitHub с помощью репродуктора? Спасибо! - person Guillaume Smet; 18.07.2019