我目前正在使用Apache Struts2网站上的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>
关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
struts2.3.1.1允许 ognl3.0.2.jar + ognl3.0.2-source.jar + ognl3.0.1 同时 。 struts2.3.1.2只能有ognl3.0.4,但删除其他版本
ognl3.0.4 是必须的,可以是唯一的ognl jar!
答案 1 :(得分:0)
我相信你需要的依赖
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-tiles-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
还有其他依赖项,但这些对于Struts2 Tiles应用程序是必需的。
答案 2 :(得分:0)
删除ognl
作为依赖项,因为这已经是struts 2.3.8
本身的暂时依赖,并确保Eclipse正确部署了您的应用程序,因此存在许多问题。
答案 3 :(得分:0)
发现问题...原来我的服务器版本太旧而无法处理struts 2.我以前使用的是Geronimo 2.0.2版,它现在可以在GlassFish 3.1.2上正常运行。
答案 4 :(得分:0)
为Struts 2应用程序使用这些Jar组合