2

我正在使用 struts 2.2.1 和 tile 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、tiles-api-2.2.2.jar、tiles -core-2.2.2.jar、tiles-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>

非常感谢你!

4

3 回答 3

1

您缺少 S2 磁贴插件。它在参考文章中列出。

IDE 错误中清楚地说明了 XML 的第二个问题;错误消息中给出的元素顺序不是您在 XML 文件中定义元素的顺序。

于 2011-10-04T14:01:13.463 回答
0

ClassNotFoundException,看起来像缺少 jar 问题。你能看到在 glassfish 服务器上部署的战争中的瓷砖插件 jar。如果没有检查,请检查 IDE 中的战争创建设置。当它没有将罐子从 lib 推到战争时,我们遇到了这个问题。

于 2011-10-04T07:01:51.703 回答
0

ClassNotFoundException 总是提醒您缺少某些引用的类/jar。确保您拥有瓷砖所需的所有基本罐子。

在我的例子中,我在我的 struts2 应用程序中有这些 jars(除了 struts2 jars)来测试一个演示 tile 项目。

  • 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-simple-1.6.2.jar
  • struts2-tiles-plugin-2.2.3.1.jar
  • 瓷砖-api-2.2.2.jar
  • 瓷砖-compat-2.2.2.jar
  • 瓷砖核心2.2.2.jar
  • 瓦片-jsp-2.2.2.jar
  • 瓷砖-servlet-2.2.2.jar
  • 瓷砖模板-2.2.2.jar

祝你好运。

问候, 阿米尔·阿里

于 2011-10-06T09:54:49.797 回答