Проблемы с работой Tiles со Struts2

Я использую стойки 2.2.1 и плитки 2.2.2. Я выполнил все шаги, описанные здесь, но я не могу заставить плитки работать ... Я получаю следующую ошибку при развертывании моей войны в Glassfish 3.1:

[#|2011-10-04T08:43:28.117+0200|SEVERE|glassfish3.1|javax.enterprise.system.tools.admin.org.glassfish.deployment.admin|_ThreadID=74;_ThreadName=AutoDeployer;|Exception while invoking class com.sun.enterprise.web.WebApplication start method
java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.apache.struts2.tiles.StrutsTilesListener
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:130)

В моем WEB-INF / lib у меня есть commons-collections-3.1.jar, commons-fileupload-1.2.1.jar, struts2-core-2.2.1.jar, tile-api-2.2.2.jar, плитки -core-2.2.2.jar, tile-jsp-2.2.2.jar и xwork-core-2.2.1.jar.

Это мой файл struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.devMode" value="true" />

    <package name="basicstruts2" extends="struts-default">
        <interceptors>
            <interceptor-stack name="appDefault">
                <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="appDefault" />

        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>

        <global-results>
            <result name="exception">/jsp/exceptions/exception.jsp</result>
            <result name="webServiceException">/jsp/exceptions/webserviceexception.jsp</result>
        </global-results>

        <global-exception-mappings>
        <exception-mapping exception="java.lang.Exception" result="exception" />
        <exception-mapping exception="java.io.IOException" result="exception" />
        <exception-mapping exception="exceptions.WebServiceExceptionForStruts"
                result="webServiceException" />
        </global-exception-mappings>

        <action name="tilesTest" class="test.action.TilesTest">
            <result name="success" type="tiles">/welcome.tiles</result>
        </action>

        <action name="index">
            <result>/jsp/index.jsp</result>
        </action>

    </package>
</struts>

После вставки кода в мой struts.xml я получаю эту ошибку в eclipse:

введите описание изображения здесь

А это мой 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>Consumer</display-name>

    <welcome-file-list>
        <welcome-file>/jsp/index.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>
    <context-param>
        <param-name>tilesDefinitions</param-name>
        <param-value>/WEB-INF/tiles.xml</param-value>

    </context-param>

</web-app>

Большое спасибо!


person strauberry    schedule 04.10.2011    source источник


Ответы (3)


Вам не хватает плагина плиток S2. Он указан в указанной статье.

Ваша вторая проблема с XML четко указана в ошибке IDE; порядок элементов, указанный в сообщении об ошибке, не соответствует порядку, который вы определяете в XML-файле.

person Dave Newton    schedule 04.10.2011
comment
Я добавил struts2-tile-plugin-2.2.1.jar и исправил порядок в struts.xml. Ошибка IDE исчезла, но ClassDefNotFound все еще существует (теперь в другой точке): [# | 2011-10-04T23: 39: 35.690 + 0200 | SEVERE | glassfish3.1 | org.apache.catalina.core.ContainerBase | _ThreadID = 17; _ThreadName = AutoDeployer; | ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.NoClassDefFoundError: org / apache / tile / web / startup at orgiles. apache.catalina.core.StandardContext.start (StandardContext.java:5271) - person strauberry; 05.10.2011
comment
Мое первое предположение заключалось в том, чтобы на самом деле проверить используемую версию плитки. плагином S2 tile. Это наводит меня на мысль, что вы смешиваете и сопоставляете несовместимые версии. - person Dave Newton; 05.10.2011
comment
Хороший :-) Зависимости были плохой частью. Но есть МНОГО зависимостей ... Я посмотрю на maven ^^ Большое спасибо за вашу помощь !! - person strauberry; 05.10.2011

ClassNotFoundException, похоже, проблема с отсутствующей банкой. Можете ли вы увидеть jar плагина плиток в войне, который развертывается на сервере Glassfish. Если не проверять, проверьте настройку создания войны в вашей IDE. Мы столкнулись с этой проблемой, когда не проталкивали jar-файлы из библиотеки в войну.

person sudmong    schedule 04.10.2011

ClassNotFoundException Всегда предупреждает вас, что какой-то класс / jar, на который есть ссылка, отсутствует. Убедитесь, что у вас есть все основные банки, необходимые для плитки.

В моем случае у меня есть эти jar-файлы (помимо jar-файлов struts2) в моем приложении struts2 для тестирования демонстрационного проекта плитки.

  • Commons-beanutils-1.7.0.jar
  • Commons-digester-2.0.jar
  • Commons-logging-1.1.1.jar
  • Commons-logging-api-1.1.jar
  • ognl-3.0.1.jar
  • slf4j-api-1.6.2.jar
  • slf4j-простой-1.6.2.jar
  • struts2-плитки-плагин-2.2.3.1.jar
  • плитки-api-2.2.2.jar
  • плитки-compat-2.2.2.jar
  • плитки-ядро-2.2.2.jar
  • плитки-jsp-2.2.2.jar
  • плитки-сервлет-2.2.2.jar
  • плитки-шаблон-2.2.2.jar

Удачи.

С уважением, Амир Али

person Amir Ali    schedule 06.10.2011