App Engine: jar в WEB-INF/lib, но все еще получает java.lang.ClassNotFoundException

Во время выполнения приложения App Engine я получаю следующее исключение:

java.lang.ExceptionInInitializerError
at
org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateExpression(ResourceBundleMessageInterpolator.java:227)

... (removed for brevity)

Caused by: java.lang.ClassNotFoundException: de.odysseus.el.ExpressionFactoryImpl

Я видел эту ошибку на моем сервере dev и исправил ее, включив juel-impl в мой pom.xml

Когда я использую appcfg.sh, чтобы вытащить свое приложение с сервера, я вижу, что в него включен juel-impl-2.2.7-20130801.163115-1.jar, включенный в WEB-INF/lib

Я действительно не уверен, что с этим делать.

2 ответа

Обновление: согласно системе отслеживания проблем GAE, это было исправлено в версии 1.9.7. Для более ранних версий, см. Ниже.


Hibernate Validator 5.x использует унифицированный язык выражений. В частности, он использует статический метод API, который ищет реализацию ExpressionFactory, Однако ошибка в App Engine 1.9.4 и более ранних версиях, по-видимому, препятствует использованию любой реализации фабрики выражений только в рабочей среде.

Пока это не исправлено, есть два обходных пути:

  1. Если вам не нужны функции Bean Validation 1.1, вернитесь к Hibernate Validator 4.3.1.Final. Я успешно проверил это.

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.3.1.Final</version>
    </dependency>
    
  2. Если вам нужна Bean Validation 1.1, были отчеты, чтобы сделать это с помощью снимка хранилища Apache BVal. Я не проверял это.


Примечание об обновлении: указание реализации языка выражений, как указано в моем предыдущем ответе (Glassfish EL или JUEL), прекрасно работает как в разработке, так и в некоторых случаях производственного использования, но все равно не удастся для некоторых проверок.

У меня такая же проблема. Это помогло использовать hibernate-validator 4.3.1.Final вместо 5.0.1.Final. Ссылка: stackru (ответ avidD-s)

Другие вопросы по тегам