繁体   English   中英

App Engine:WEB-INF / lib中的jar,但仍会收到java.lang.ClassNotFoundException

[英]App Engine: jar in WEB-INF/lib but still getting 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

我已经在开发服务器上看到此错误,并通过在pom.xml中包含juel-impl来解决了该错误

当我使用appcfg.sh从服务器中提取我的应用程序时,我发现它在WEB-INF / lib中包含juel-impl-2.2.7-20130801.163115-1.jar

我真的不知道该怎么做。

更新:根据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。 参考: stackoverflow (avidD-s答案)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM