4

我是 JSF 的新手,我最近开始使用教程。我已经完全按照教程中提供的信息创建了应用程序。但是,当我启动服务器时,出现以下错误:

Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
java.lang.ClassCastException: com.sun.faces.config.WebConfiguration cannot be cast to com.sun.faces.config.WebConfiguration
    at com.sun.faces.config.WebConfiguration.getInstance(WebConfiguration.java:154)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:145)

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>Hello, World</display-name>
    <description>Welcome to JavaServerFaces</description>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

</web-app>

如教程中所示,我在 Web-Inf/lib 中添加了 jsf-api 和 jsf-impl,但是通过谷歌搜索我发现 jboss 有自己的 jsf 版本,这可能会污染我的应用程序与多个 jsf 版本。如果是这种情况,那么我该如何解决问题,或者如果我错了,那么错误背后的原因是什么?

只是添加,因为我相信它的 jar 文件 conflit 我试图添加使用 jboss from 导入的 jar 文件jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\jsf-libs,但仍然是徒劳的。

请帮忙。

4

3 回答 3

5

解决冲突的更好方法是在 web.xml 中添加上下文参数,如下所述:

<context-param>
      <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
      <param-value>true</param-value>
</context-param>

查看:在你的 WAR 中捆绑 JSF

于 2013-04-14T05:03:00.163 回答
1

我不知道您的 Eclipse 是如何配置的(Java EE/JBoss 工具等)。但是你应该在你的 webproject 中添加一个服务器运行时:

  1. 添加服务器运行时

1.1 在Eclipse中打开Server视图

1.2 上下文菜单然后->新建服务器->选择JBoss 5.0服务器类型

1.3 服务器运行环境->添加

1.4 主目录-> 你的服务器主目录/默认例如

  1. 现在更改您的 web 项目的构建路径。

2.1。添加库->服务器运行时->选择新的运行时

2.3 您的耳朵或您的 webprojects Web-Inf/lib 中没有 JSF 或其他库

现在,您拥有了所有 Jboss-lib,包括类路径中的 jsf-lib - 由 Eclipse 控制 - 您不必担心从服务器 lib 设置 jar 等等。

我希望它有所帮助。以类似的方式,我只是创建一个测试项目

于 2013-04-11T06:55:44.787 回答
0

是的,看起来像 jar 版本冲突

从应用程序中删除 JSF 依赖项:如果您使用 maven 构建项目,则可以将依赖项范围设置为提供

从 JSF 中删除依赖项范围(如果您想使用自己的 jars。)考虑使用 Jboss 应用程序描述并排除 JSF 依赖项。

我不知道 JBoss 5 XML 格式,所以发布 JBoss 7

<jboss-deployment-structure>
    <deployment>
        <exclusions>
            <module name="com.sun.jsf-impl" />
        </exclusions>
    </deployment>
</jboss-deployment-structure>

应该是类似的东西。

于 2013-04-11T06:04:52.173 回答