Cómo crear javax.el.ExpressionFactory en Google App Engine para usar Hibernate Validator

Estoy tratando de actualizar a la versión 6 del validador de hibernación en mi aplicación Google App Engine, que necesita javax.el , así que agregué org.glassfish:javax.el:jar:3.0.1-b10mis dependencias.

Sin embargo, esto no se usa:

En el entorno de desarrollo local, puedo crear un nuevo ExpressionFactorycon ExpressionFactory.newInstance(). El ExpressionFactoryes de la instalación local del embarcadero jetty93/jetty-distribution/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.33.jary se devuelve a la aplicación org.apache.el.ExpressionFactoryImplde la misma jarra.

En el entorno GAE implementado, el ExpressionFactoryes de java8_runtime/runtime-shared.jar!/javax/el/ExpressionFactory.classpero ExpressionFactory.newInstance()todavía intenta obtener un org.apache.el.ExpressionFactoryImpl, aunque com.sun.el.ExpressionFactoryImplesté presente.

En ambos entornos, puedo cargar manualmente un com.sun.el.ExpressionFactoryImplfrom WEB-INF/lib/javax.el-3.0.1-b10.jar, por lo que está presente en el classpath:

final Constructor<ExpressionFactoryImpl> constructor = com.sun.el.ExpressionFactoryImpl.class.getConstructor();
final ExpressionFactoryImpl expressionFactory = constructor.newInstance();
  • ¿Por qué el entorno GAE está tan interesado en cargar org.apache.el.ExpressionFactoryImplaunque la implementación de referencia com.sun.el.ExpressionFactoryImplesté en el classpath?
  • ¿Cómo puedo hacer que GAE cargue el existente ExpressionFactoryImplpara poder crear un ValidatorFactory de hibernación? ¿Tengo que suministrar manualmente una MessageInterpolatorpara poder suministrar la correcta ExpressionFactoryImpl?
Respuesta 1

Estoy tratando de encontrar el genérico correcto y la disposición comodín para que esto funcione. Se han cambiado los tipos y se ha eliminado el resto del código para mantener esto lo más simple posible. Aquí tengo un ...

He estado luchando por encontrar la solución con este error durante 2 semanas. ¿Podría ayudarme con lo que sucedió? Aquí está el seguimiento de la pila de errores: "java.lang.IllegalArgumentException: Nombre para el argumento ...

Soy nuevo en Java y acabo de comenzar a hacer Leetcode - Two Sum. Descubrí que, excepto la solución de fuerza bruta, la solución común es usar Hashmap. Pero todavía no puedo entenderlo. Por ejemplo, esto funciona en mi ...

Estoy tratando de ejecutar un comando: public static void main (String [] args) {int buffer; StringBuilder res = new StringBuilder (); Proceso de proceso; pruebe {proc = Runtime ...