【问题标题】:RestEasy-Links: javax.el-3.0.0.jar is not loaded during the deployment on TomcatRestEasy-Links:在 Tomcat 上部署期间未加载 javax.el-3.0.0.jar
【发布时间】:2015-06-09 13:06:25
【问题描述】:

我打算写一点休息服务,但在链接注入方面遇到了问题。

我正在使用 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

服务启动,但是当我请求执行链接注入的资源时 RESTServiceDiscovery 字段,一个java.lang.ClassNotFoundException: javax.el.StandardELContext 被抛出。

- 谢谢!

【问题讨论】:

    标签: java tomcat resteasy


    【解决方案1】:

    在 tomcat 7 中,Expression Language API 规范版本为 2.2,StandardELContext 为 3.0 版本。

    来自Servlet specification

    如 Java EE 许可协议中所述,servlet 容器 不是 Java EE 产品的一部分,不应允许应用程序 覆盖 Java SE 平台类,例如 java.* 和 javax.* 命名空间,Java SE 不允许修改。

    所以,你可以:

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

    【讨论】:

    • 我在 CentOS Tomcat 7 上遇到了同样的问题(我认为是同样的问题)并且被这篇文章误导了:stackoverflow.com/questions/15600981/… 没有答案。 Cesar先生的回答帮我找到了解决办法。
    • 当我在我的 POM 中将 javax.el-api 版本 3.0.0 标记为“已提供”时,问题就消失了——我希望这对遇到同样问题的人有所帮助。但是,我认为更新到 TC 8 是一个更好的解决方案,如果它允许我的应用程序库覆盖 TC 库。奇怪的是,我在 Mac 上的 Eclipse 中部署到 TC 7 没有问题,但是当我在 CentOS 上部署到 TC 7 时,我得到了上述帖子中所述的确切冲突。
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    相关资源
    最近更新 更多