【问题标题】:Exception thrown in Tomcat when using JSF in Eclipse Dynamic Web Project在 Eclipse 动态 Web 项目中使用 JSF 时在 Tomcat 中引发异常
【发布时间】:2011-11-14 16:46:17
【问题描述】:

我正在尝试在 MacOSX 上的 Eclipse (Indigo SR1) 中设置一个 Web 项目: 雄猫 7.0.22 JSF 2.0

这是一个动态 Web 项目,我在其中通过项目属性添加了 JSF 项目方面。

添加 JSF Project Facet 时,我可以选择使用以下任一:Mojarra 2.0.3 或 Apache MyFaces 2.0.2

如果我选择 Mojarra 并尝试启动 Tomcat(从 Eclipse 中),我会收到以下异常:

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()

如果我选择 MyFaces,则会出现以下异常:

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.application.ApplicationFactory

根据此处的其他答案,我没有将 jar:s 添加到 WEB-INF/lib 文件夹中,并且在项目的构建路径中仅添加了 Eclipse 本身包含的库:

  • Apache Tomcat v7.0
  • EclipseLink 2.3.0
  • JSF 2.0(Apache MyFaces JSF Core-2.0 API 2.0.2)
  • MySQL JDBC 驱动程序

项目本身很小,包含两个 xhtml 文件,但没有 bean。

有什么想法吗?

【问题讨论】:

    标签: eclipse jsf-2 tomcat7


    【解决方案1】:

    如果我选择 Mojarra 并尝试启动 Tomcat(从 Eclipse 中),我会收到以下异常:

    java.lang.LinkageError:加载程序约束违规:解析接口方法“javax.servlet.jsp.JspApplicationContext.getExpressionFactory()”时

    此异常表明您在 web 应用的运行时类路径中有一个不同 servletcontainer make/version 的 JSP API/impl JAR 文件,该文件与目标运行时本身的 JSP API 冲突。


    如果我选择 MyFaces,我会收到以下异常:

    java.lang.IllegalStateException:应用程序在启动时未正确初始化,找不到工厂:javax.faces.application.ApplicationFactory

    此异常表明您在 web 应用的运行时类路径中的其他位置有一个不同 JSF 制作/版本的 JSF impl JAR 文件,该文件与实际加载的 JSF impl 冲突。


    这两个异常归结为 webapp 的运行时类路径是脏的。除了/WEB-INF/lib 文件夹——正如你所说,它似乎是空的——Tomcat/libJRE/libJRE/lib/ext 被 webapp 的运行时类路径覆盖。您应该确保自己没有在其中添加任何 JAR。删除它们,如果有的话。必要时删除/卸载/重新安装 Tomcat 和/或 JRE 以确保安全。然后你应该不去碰他们的图书馆,除非你真的明白你在做什么。

    认为你有一个来自 Glassfish 服务器的 javaee.jar 在你的 web 应用的运行时类路径中的某个位置。这至少可以解释 both 异常,因为它包括标准 JSP API 和 Mojarra API。

    【讨论】:

    • 仍然没有成功。我有一个全新安装的 Tomcat,我从未篡改过 JRE/lib 或 JRE/lib/ext。当 Eclipse 构建和发布项目时,它会将以下内容放入 wtpwebapps/JSFTest/WEB-INF/lib/: com.sun.tools.xjc_2.2.0.jar com.sun.xml.bind_2.2.0.v201004141950.jar eclipselink.jar el-ri-1.0.jar javax.activation_1.1.0.jar javax.mail_1.4.0.jar javax.persistence_2.0.3.jar javax.xml.bind_2.2.0.v201005080402.jar javax.xml.stream_1.0.1.v201004272200.jar jsf-api-2.1.0-b03.jar jsf-api.jar jsf-impl-2.1.0-b03.jar jsf-impl.jar jsp-api-2.1.jar jstl-1.2.jar servlet-api-2.5。罐子
    猜你喜欢
    • 2013-06-19
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 2014-07-08
    • 2011-01-09
    相关资源
    最近更新 更多