[Groovy] The number of constructors during runtime and compile time for java.lang.RuntimeException do not match. Expected 4 but got 5 [IncompatibleClassChangeError]


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

Лечение

Нужно изначально скомпилить классы ваших исключений. Для этого прийдётся либо его переписать на чистую джаву, либо, если у вас на проекте Groovy старше версии 2.1.9, то у вас в наличии есть чудная аннотация @ComplileStatic которой нужно пометить ваш класс исключения.

@groovy.transform.CompileStatic
class UnknownPermissionException extends Exception {
    UnknownPermissionException(String permissionCode) {
        super("Permission with code ${permissionCode} is not exists")
    }
}

Не забывайте лепить эту аннотацию на все ваши исключения.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s