Не удается зарегистрировать класс на сервере Ebean (Play Framework 2-Java)
Я получаю следующую ошибку при запуске моей Play Framework 2.2.проект x (Java):
Configuration error
Cannot register class [models.SomeClass] in Ebean server
сообщения об ошибках, отображаемые в браузере, указывают мне на строку ebean.default="models.*"
в своем application.conf
, а консоль говорит мне, что у меня есть java.lang.VerifyError: Bad type on operand stack
в одном из моих методов. Нет ничего особенного в методах, для которых это происходит, и это произошло для горстки методов сейчас.
я обнаружил, что ошибки можно избежать с помощью статического метода вместо этого: это путем замены someObject.doJob()
by SomeClass.doJob(someObject)
. Я использовал этот хак, и он работает, но я не очень доволен тем, что все мои методы статичны, когда они не должны быть.
кто-нибудь сталкивался с той же проблемой и нашел способ ее исправить (не делая методы статическими)?
2 ответов
решено: оказалось, что методы с проблемами все ссылочные поля, которые были отмечены как окончательные. По-видимому, Play Framework / Ebean не любит окончательные поля в классах сущностей. После удаления final
ключевое слово из этого поля, проблема ушла.
Я использую play 2.3 и столкнулся с той же проблемой.
Я создал абстрактный класс и еще один, расширяющий этот абстрактный класс. Это вызывает ошибку. Похоже, ebean рассматривает каждый класс, расширяющий абстрактный класс, как конечный класс и выдает одно и то же сообщение об ошибке.
перемещение всех классов в другой пакет устранило проблему.