Ошибка "Не удается прочитать TLD META-INF/jsf_core.tld из jsf-impl-2.0.jar" при интеграции JSF

У нас есть приложение Struts+Spring+Hibernate, и мы пытаемся интегрировать JSF. Для этого мы сделали некоторые настройки в web.xml а также struts-config.xml, Я добавил несколько файлов JAR в WEB-INF/lib,

Файлы jar, содержащиеся в моем WEB-INF/lib, перечислены здесь:

ANTLR-2.7.6rc1.jar,asm.jar, ASM-attrs.jar, BSH-2.0b2.jar,c3p0-0.9.1.2-jdk1.3.jar, CGLIB-2.1.3.jar, Викисклада BeanUtils-1,7.jar, Обще-между-0.8.jar, Обще-кли-1.0.jar, Обще-кодек-1.3.jar, Викисклад коллекция-3.jar, Обще-ДБХП-1.2.1.jar, Обще-варочного-1,7.jar, Обще-открытие-0.2.jar, Обще-fileupload.jar, Обще-HttpClient-3.1.jar, Обще-ю-1.3.1.jar, Обще-Ланг-2.3.jar, Обще-каротаж 1.1.jar, обыкновенные бассейн-1.2.jar, обыкновенные-validator.jar, разъем-1_5.jar,dom4j-1.6.1.jar, EHCache-1.1.jar, эль-апи-6.0.20.jar, эль-осущ-2,2 0,0-SNAPSHOT.jar, спящий режим-3.1.3.jar, причал-Util-6.0.0,.jar, сервлет-апи-2.3.jar, пружинно-2.5.6.jar,standard.jar,struts.jar,xercesImpl-2.6.2.jar,xmlParserAPIs-2.6.2.jar, XStream-1.3.1

Ниже приведен jar-файл, недавно добавленный для интеграции JSF:

JSF-апи-2.0.jar, JSF-осущ-2.0.jar, MyFaces-JSF-апи-1.0.9.jar.jar.jar, распорки-граней-1.3.10.jar

мой web.xml является:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>SSHIntgr</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/config/applicationContext.xml</param-value>
    </context-param>


     <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>
            org.apache.struts.action.ActionServlet
        </servlet-class>

        <init-param>
            <param-name>config</param-name>
            <param-value>/config/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>locale</param-name>
            <param-value>true</param-value>
        </init-param>

        <load-on-startup>2</load-on-startup>
    </servlet>
    <!-- struts-faces configuration start -->
     <servlet>
      <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- struts-faces configuration start -->
<listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
 <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>     
</web-app>

мой struts-config.xml является

<struts-config>

    <form-beans>
        <form-bean name="usrForm" type="com.sshi.web.form.UsrForm" />
    </form-beans>

    <global-exceptions />

    <global-forwards />

    <action-mappings>

        <action path="/login" type="com.sshi.web.action.LoginAction"
            name="usrForm" scope="request">
            <forward name="allowUser" path="/pages/Welcome.jsp"/>
            <forward name="denyUser" path="/index.jsp"/>
        </action>

    </action-mappings>

  <controller>
<set-property property="processorClass"
value="org.apache.struts.faces.
application.FacesRequestProcessor"/>
</controller>
 <message-resources key="MessageResources" parameter="MessageResources"  null="false" />
     <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames"
            value="/config/validator-rules.xml,/config/validation.xml" />
        <set-property property="stopOnFirstError" value="true" />
    </plug-in>
</struts-config>

Я использую Spring Toll Suite, Tomcat 5.5 и JDK 1.5. мой Tomcat 5.5\common\lib содержит файлы JAR

commons-el.jar,jasper-compiler.jar,jasper-compiler-jdt.jar,jasper-runtime.jar,jsp-api.jar,naming-factory.jar,naming-factory-dbcp.jar, naming-resources. банка, сервлет-api.jar

Мой сервер запускается правильно, но не может загрузить страницу JSP, я получаю исключение как

org.apache.jasper.JasperException: Unable to read TLD "META-INF/jsf_core.tld" from JAR file "file:/SSHIntgr/WEB-INF/lib/jsf-impl-2.0.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: com.sun.faces.taglib.jsf_core.CoreValidator
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:50)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:179)
at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:181)
at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:418)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:483)

Как я могу решить это?

1 ответ

Вы используете tomcat 5.5, который является контейнером Servlet 2.4, но JSF 2.0 требует Servlet 2.5 или новее.

Итак, у вас есть 2 варианта:

  • Обновите свой сервлет-контейнер до версии Servlet 2.5 (например, Tomcat 6.0).
  • Понизьте JSF до 1.2, который совместим с сервлетом 2.4.

Не имеет отношения к конкретной проблеме: файл servlet-api-2.3.jar не принадлежит в WEB-INF/lib, Избавиться от этого. Предполагается, что он уже предоставлен сервлет-контейнером (в нашем случае /lib). Хранение этого файла приведет только к отсутствию определения класса или к ошибкам абстрактного метода во время выполнения.

Другие вопросы по тегам