RestEasy-Links:javax.el-3.0.0.jar 在 Tomcat 上的部署期间未加载

RestEasy-Links: javax.el-3.0.0.jar is not loaded during the deployment on Tomcat

我打算写一些休息服务,但在 link 注入时遇到了一个问题。

我正在使用 resteasy 3.0.7.Finalresteasy-links 3.0.7.Final。当我将应用程序部署到 Tomcat (7.0.59) 时,日志显示以下信息:

INFORMATION: validateJarFile(/Users/user/Workspace/.metadata/.plugins/
org.eclipse.wst.server.core/tmp0/wtpwebapps/jaxrs-wnck/WEB-INF/lib/javax.el-3.0.0.jar)
- jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class:
javax/el/Expression.class
Apr 04, 2015 6:29:48 PM org.apache.catalina.loader.WebappClassLoader validateJarFile

INFORMATION: validateJarFile(/Users/user/Workspace/.metadata/.plugins/org.eclipse.wst.
server.core/tmp0/wtpwebapps/jaxrs-wnck/WEB-INF/lib/jboss-el-api_3.0_spec-1.0.0.Final.jar)
- jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class:
javax/el/Expression.class

服务启动了,但是当我请求资源时,该资源执行 link 注入 RESTServiceDiscovery 字段,抛出 java.lang.ClassNotFoundException: javax.el.StandardELContext

- 谢谢!

在tomcat7中,表达式语言API规范版本为2.2,StandardELContext在3.0版本中。

来自Servlet specification

As described in the Java EE license agreement, servlet containers that are not part of a Java EE product should not allow the application to override Java SE platform classes, such as those in the java.* and javax.* namespaces, that Java SE does not allow to be modified.

因此,您可以:

  • 更新为 tomcat 8;
  • 在 Java EE 容器中部署您的应用程序,这允许应用程序覆盖;
  • 使用旧版本的 rest easy(3.0.5.Final 应该可以);