如何在Google App Engine中创建javax.el.ExpressionFactory以使用Hibernate验证器
我正试图在我的Google App Engine应用程序上升级到hibernate validator版本6,因此我在依赖项中添加了如何在Google App Engine中创建javax.el.ExpressionFactory以使用Hibernate验证器,java,google-app-engine,google-cloud-platform,Java,Google App Engine,Google Cloud Platform,我正试图在我的Google App Engine应用程序上升级到hibernate validator版本6,因此我在依赖项中添加了org.glassfish:javax.el:jar:3.0.1-b10 但是,在以下情况下不使用: 在本地开发环境中,我可以使用ExpressionFactory.newInstance()创建一个新的ExpressionFactory。ExpressionFactory来自本地Jetty安装Jetty 93/Jetty distribution/lib/apac
org.glassfish:javax.el:jar:3.0.1-b10
但是,在以下情况下不使用:
在本地开发环境中,我可以使用ExpressionFactory.newInstance()
创建一个新的ExpressionFactory
。ExpressionFactory
来自本地Jetty安装Jetty 93/Jetty distribution/lib/apache jsp/org.mortbay.jasper.apache-el-8.0.33.jar
并从同一jar返回实现org.apache.el.ExpressionFactoryImpl
在部署的GAE环境中,ExpressionFactory
来自java8\u runtime/runtime-shared.jar/javax/el/ExpressionFactory.class
但是ExpressionFactory.newInstance()
仍然尝试获取org.apache.el.ExpressionFactoryImpl
,即使存在com.sun.el.ExpressionFactoryImpl
在这两种环境中,我都可以从WEB-INF/lib/javax.el-3.0.1-b10.jar
手动加载com.sun.el.ExpressionFactoryImpl
,因此它出现在类路径中:
final Constructor<ExpressionFactoryImpl> constructor = com.sun.el.ExpressionFactoryImpl.class.getConstructor();
final ExpressionFactoryImpl expressionFactory = constructor.newInstance();
final Constructor=com.sun.el.ExpressionFactoryImpl.class.getConstructor();
final ExpressionFactoryImpl expressionFactory=constructor.newInstance();
- 为什么GAE环境如此热衷于加载
,即使参考实现org.apache.el.expressionfactorympl
在类路径上com.sun.el.expressionfactorympl
- 如何使GAE加载现有的
,以便创建hibernate验证工厂?我是否必须手动提供,以便提供正确的ExpressionFactoryImpl
expressionfactorympl
<system-properties>
<property name="javax.el.ExpressionFactory" value="com.sun.el.ExpressionFactoryImpl" />
</system-properties>
另见
我没有测试第二个方法,但它在apache el ExpressionFactory的源代码中具有最高优先级,而system属性只是第三次尝试。Hi,您的XML文件中是否指定了“com.sun.el.ExpressionFactoryImpl”依赖项?尝试提供配置详细信息。com.sun.faces.expressionFactory com.sun.el.expressionfactorympl我将com.sun.faces.expressionFactory com.sun.el.expressionfactorympl添加到我的web.xml中,没有什么不同……我认为报告并解决了类似的问题。试试看。如果您仍然遇到问题,请提供您的配置文件。谢谢您-在大量搜索解决方案后,添加
系统属性
条目已奏效。我以前曾尝试按所述将文件添加到META-INF
中,但这并不能解决我在使用Java8标准时遇到的问题。
com.sun.el.ExpressionFactoryImpl