Я пытаюсь перейти на 6-ю версию валидатора гибернации в своем приложении Google App Engine, которому нужен javax.el , поэтому я добавил org.glassfish:javax.el:jar:3.0.1-b10
в мои зависимости.
Однако, это не используется:
В локальной среде разработчика я могу создать новый ExpressionFactory
с ExpressionFactory.newInstance()
.ExpressionFactory
из локальной установки Jetty jetty93/jetty-distribution/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.33.jar
и возвращает реализацию org.apache.el.ExpressionFactoryImpl
из того же файла.
В развернутой среде GAE ExpressionFactory
из java8_runtime/runtime-shared.jar!/javax/el/ExpressionFactory.class
, но ExpressionFactory.newInstance()
все еще пытается получить org.apache.el.ExpressionFactoryImpl
, даже если присутствует com.sun.el.ExpressionFactoryImpl
.
В обеих средах я могу вручную загрузить com.sun.el.ExpressionFactoryImpl
из WEB-INF/lib/javax.el-3.0.1-b10.jar
, поэтому он присутствует в пути к классам:
final Constructor<ExpressionFactoryImpl> constructor = com.sun.el.ExpressionFactoryImpl.class.getConstructor();
final ExpressionFactoryImpl expressionFactory = constructor.newInstance();
- Почему среда GAE так заинтересована в загрузке
org.apache.el.ExpressionFactoryImpl
, хотя эталонная реализация com.sun.el.ExpressionFactoryImpl
находится на пути к классам? - Как я могу заставить GAE загружать существующие
ExpressionFactoryImpl
чтобы я мог создать спящий ValidatorFactory?Нужно ли вручную вводить MessageInterpolator
, чтобы я мог правильно указать ExpressionFactoryImpl
?