Java Struts2 tiles插件2.3.28-StrutsTilesListener抛出NullPointerException

Java Struts2 tiles插件2.3.28-StrutsTilesListener抛出NullPointerException,java,maven,struts2,weblogic,apache-tiles,Java,Maven,Struts2,Weblogic,Apache Tiles,我正在从struts-2.3.24.1升级到struts-2.3.28,因此必须将Tile从2.1.2升级到2.2.2。我部署在WebLogicServer12.1.3上。我的应用程序使用maven 3构建时没有错误,但是在部署时,它会生成以下错误: <User defined listener org.apache.struts2.tiles.StrutsTilesListener failed: java.lang.NullPointerException.java.lang.Null

我正在从struts-2.3.24.1升级到struts-2.3.28,因此必须将Tile从2.1.2升级到2.2.2。我部署在WebLogicServer12.1.3上。我的应用程序使用maven 3构建时没有错误,但是在部署时,它会生成以下错误:

<User defined listener org.apache.struts2.tiles.StrutsTilesListener failed: java.lang.NullPointerException.java.lang.NullPointerException
    at java.io.File.<init>(Unknown Source)
    at org.apache.struts2.tiles.StrutsWildcardServletTilesApplicationContext.<init>(StrutsWildcardServletTilesApplicationContext.java:53)

刚刚解决了我遇到的NPE问题。如上所述,getRealPath无法将虚拟路径转换为绝对路径是一个问题。我用了这个帖子的建议

并添加了配置

<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
true

到my weblogic.xml。

尝试删除
,如果没有帮助,请在JIRA Update dtd-s中注册错误,删除上下文参数,确保服务器上没有旧版本。调试你的应用程序以找出空值。可能是@beresfordt的重复项而不是dup。NPE来自框架插件。可能是配置错误。@AleksandrM I在调试打开的情况下启动了应用程序,并找到了上下文。getRealPath()无法将虚拟路径转换为绝对路径(请参见上面的编辑3/31/2016)。“path”变量和contextpath都是正确的。不确定getRealPath()为什么返回null。感谢您的帮助。谢谢
    <properties>
    <struts2-version>2.3.28</struts2-version>
    <tiles-version>2.2.2</tiles-version>
    </properties>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>${struts2-version}</version>
        <exclusions>
            <exclusion>
                <groupId>javassist</groupId>
                <artifactId>javassist</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-convention-plugin</artifactId>
        <version>${struts2-version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-junit-plugin</artifactId>
        <version>${struts2-version}</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-rest-plugin</artifactId>
        <version>${struts2-version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>${struts2-version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-tiles-plugin</artifactId>
        <version>${struts2-version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>${tiles-version}</version>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>${tiles-version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-el</artifactId>
        <version>${tiles-version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-freemarker</artifactId>
        <version>${tiles-version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-ognl</artifactId>
        <version>${tiles-version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>${tiles-version}</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-servlet</artifactId>
        <version>${tiles-version}</version>
    </dependency>   
<!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.enable.DynamicMethodInvocation" value="TRUE" />

<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" class="path.mapper.GfpDynamicMapper" name="gfpDynamicMapper"/>
<constant name="struts.mapper.class" value="gfpDynamicMapper" /> 

<constant name="struts.convention.action.includeJars" value=".*_wl_cls_gen.*"/>
<constant name="struts.convention.action.fileProtocols" value="jar,zip" />


<constant name="struts.convention.action.suffix" value="Controller" />
<constant name="struts.convention.action.mapAllMatches" value="true" />
<constant name="struts.convention.default.parent.package" value="default" />
<constant name="struts.custom.i18n.resources" value="path/application-gfp" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.convention.result.path" value="tiles/gfp"/>


<!-- Handler setup -->
<bean name="gfpXml"  type="org.apache.struts2.rest.handler.ContentTypeHandler" class="path.handler.GfpXmlHandler" />
<bean type="com.opensymphony.xwork2.UnknownHandler" name="handler" class="path.handler.UnknownHandler"/>
<package name="default" namespace="/actions" extends="rest-default">
    <result-types>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types>

    <interceptors>

        <interceptor name="userInterceptor"  class="path.interceptors.UserInterceptor" />

        <interceptor name="exceptionMapper" class="path.interceptors.ExceptionMappingInterceptor">
            <param name="logEnabled">true</param>
        </interceptor>

        <interceptor name="cachingHeadersInterceptor" class="path.interceptors.CachingHeadersInterceptor"/>
        <interceptor-stack name="interceptorStack">
            <interceptor-ref name="exceptionMapper"/>
            <interceptor-ref name="tokenSession" >
                <param name="excludeMethods">create,edit,index,show,compare,ulns,showInvalidUlns,toggleExternalUics,status,exportSummary,summary,exportSlice,exportSlices,export,exportUlns,exportPids,exportPcode,exportArt,exportAst,exportDrrs,exportOrgAssoc,exportBillet,exportEquipment,exportLeaderAssoc,exportGfmts,exportSorts,exportUSMCSliderPull,exportWebSked,exportExcel,exportSliceCompare,exportSliceCompareCritieria,exportCargo,exportPersonnel,showSliceSummary</param>
            </interceptor-ref>
            <interceptor-ref name="alias"/>
            <interceptor-ref name="userInterceptor"/>
            <interceptor-ref name="servletConfig"/>
            <interceptor-ref name="messages">
                <param name="operationMode">AUTOMATIC</param>
            </interceptor-ref>
            <interceptor-ref name="prepare"/>
            <interceptor-ref name="i18n"/>
            <interceptor-ref name="chain"/>
            <interceptor-ref name="debugging"/>
            <interceptor-ref name="profiling"/>
            <interceptor-ref name="scopedModelDriven"/>
            <interceptor-ref name="modelDriven">
                <param name="refreshModelBeforeResult">true</param>
            </interceptor-ref>
            <interceptor-ref name="fileUpload"/>
            <interceptor-ref name="checkbox"/>
            <interceptor-ref name="multiselect"/>
            <interceptor-ref name="staticParams"/>
            <interceptor-ref name="actionMappingParams"/>
            <interceptor-ref name="params">
                <param name="excludeParams">dojo\..*,statusCode,token,struts.token.name,import,submit,label.next,label.back,_method</param>
            </interceptor-ref>
            <interceptor-ref name="rest" />
            <interceptor-ref name="conversionError"/>
            <interceptor-ref name="validation">
                <param name="excludeMethods">input,back,cancel,browse,index,show,edit,editNew</param>
            </interceptor-ref>
            <interceptor-ref name="restWorkflow">
                <param name="excludeMethods">input,back,cancel,browse,index,show,edit,editNew</param>
            </interceptor-ref>
            <interceptor-ref name="annotationWorkflow"/>
            <interceptor-ref name="cachingHeadersInterceptor"/>
        </interceptor-stack>
      </interceptors>
</package>
</struts> 
<web-app id="WebApp_9" 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">
<context-param>
    <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
    <param-value>/WEB-INF/classes/path/tiles-defs.xml</param-value>
</context-param>    
<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
    <definition name="layout.default" template="/WEB-INF/tiles/common/default.jsp">
        <put-attribute name="infoKey" value="" />
        <put-attribute name="titleKey" value="" />
        <put-attribute name="browserTitleKey" value="" />
        <put-attribute name="header" value="/WEB-INF/tiles/common/header.jsp" />
        <put-attribute name="content" value="" />
        <put-attribute name="menubar" value="" />
        <put-attribute name="adminMenu" value="" />
        <put-attribute name="footer" value="/WEB-INF/tiles/common/footer.jsp" />
</definition>
<definition name="layout.update" template="/WEB-INF/tiles/common/updateDefault.jsp">
    <put-attribute name="infoKey" value="" />
    <put-attribute name="titleKey" value="" />
    <put-attribute name="header" value="/WEB-INF/tiles/common/classmarkTop.jsp"/>
    <put-attribute name="content" value="" />
    <put-attribute name="menubar" value="" />
    <put-attribute name="footer" value="/WEB-INF/tiles/common/footer.jsp" />
</definition>
<definition name="layout.admin" extends="layout.default">
    <put-attribute name="adminMenu" value="/WEB-INF/tiles/gfp/admin/adminMenu.jsp" />
    </definition>
</tiles-definitions>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>