【发布时间】:2013-02-28 15:06:00
【问题描述】:
我目前正在使用 Apache Struts 网站上的 the tutorial。
目前,每当我在表单上按“提交”或单击 Bruce Philips 超链接时,我都会收到 NoSuchMethodError。
javax.servlet.ServletException: Filter execution threw an exception
root cause
java.lang.NoSuchMethodError: ognl.SimpleNode.isEvalChain(Lognl/OgnlContext;)Z
com.opensymphony.xwork2.ognl.OgnlUtil.isEvalExpression(OgnlUtil.java:224)
com.opensymphony.xwork2.ognl.OgnlUtil.setValue(OgnlUtil.java:215)
com.opensymphony.xwork2.ognl.OgnlValueStack.trySetValue(OgnlValueStack.java:187)
com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:174)
com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:152)
....
我也不太确定问题出在哪里,我相信我已经包含了教程所述的所有内容。我尝试在我的pom.xml 中包含依赖项,但这也没有什么区别。
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>Struts2PracticeSite</groupId>
<artifactId>Struts2PracticeSite</artifactId>
<packaging>war</packaging>
<version>0.0.1</version>
<build>
<finalName>Struts2PracticeSite</finalName>
</build>
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
</project>
关于如何解决此问题的任何想法?
【问题讨论】:
-
你的类路径中是否有多个
ognl-*.jar? -
我该如何检查?
-
如果您将应用程序部署为 WAR 文件,请使用一些 zip 实用程序(WinZip 左右)打开它,然后转到
WEB-INF/lib文件夹。确保那里只有一个ognl-*.jar文件。作为替代方案,运行mvn clean并重新部署并查看错误是否消失。有时我会遇到类似的错误,我发现我部署的 WAR 中有重复的 jar。 -
我刚刚尝试了这两种解决方案,不幸的是它没有任何区别。 ognl-3.0.6.jar 是唯一的 ognl,在重新部署之前运行 maven clean 也不起作用。
-
请包含您的整个 pom。您几乎可以肯定在某处混合了不同版本的库。