我的时区下午好。
我正在开发一个生产超过一年的项目,应用服务器正在运行J2EE 1.3版本。现在我正在尝试使用apache tiles框架将内容与布局分离。项目在WEB-INF / lib下面的库实现了STRUTS框架 -struts1.2.6 -struts核-1.3.10 -struts-额外-1.3.10.jar -struts-标签库-1.3.10.jar
介绍完之后,我的梦魇开始了: 1)要配置Tiles,我将以下代码添加到我的struts-config.xml:
<action path="/tilesTest"
parameter="aDef"
type="org.apache.struts.actions.ForwardAction" />
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor" />
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tilesdefs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>
'aDef'参数在tilesdefs.xml中定义。 当我在浏览器中调用该操作时,它会抛出以下异常:
java.lang.NoSuchMethodError:org.apache.struts.config.ForwardConfig.getContextRelative()Z org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:289)
经过调查,我发现了一篇帖子说:
检查应用程序lib文件夹以查找struts-core-1.3.8.jar以及struts.jar。正因为如此,抛出异常。 struts.jar有forwardConfig类和getContextRelative()方法。 struts-core-1.3.8.jar有forwardConfig类,但没有getContextRelative()方法。 这导致了这个问题。 因此删除struts.jar以便使用1.3.8版本。 - 另外将struts-extras-1.3.8.jar添加到应用程序库
就像我在乞讨中说的那样,我有相同的两个库,唯一的问题是,struts.jar lib有tile包,struts-core-1.3.8没有那个包。 那么我想要做什么,在这个应用程序中运行tile?
对不起问题扩展,但我必须解释所有情况。 最好的祝福 感谢任何试图帮助我的人
答案 0 :(得分:2)
修复您的类路径。在类路径中有两个不同版本的Struts没有多大意义。 Struts 1.3.10的tiles类在struts-tiles-1.3.10.jar中,与struts-1.3.10捆绑在一起。