Struts2 Hello World jsp示例错误
我想在Tomcat 6中运行Hello World Struts2项目。
我一直在:
root cause: java.lang.ClassNotFoundException: org.apache.struts2.interceptor.SessionAware java.lang.NoClassDefFoundError: org/apache/struts2/interceptor/SessionAware at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$000(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1374) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) at com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:138) at com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:398) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:355) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:460) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:265) at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:189) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:360) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:403) at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:190)
但是我确实在项目的WEB-INF / lib文件夹中有struts2所需的jar。
jar子:
struts-core xwork ognl freemarker commons-fileupload commons-io commons-lang
有任何想法吗?
我关注了一个在线Struts2 HelloWorld示例:
HelloWorld.action类:
package za.co.vine.tutorialspoint.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
的helloWorld.jsp:
Hello World Hello World,
的index.jsp:
Hello World Hello World From Struts2
struts.xml中:
/HelloWorld.jsp
web.xml中:
Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
只需在WEB-INF / lib中添加以下Jars即可。 如果您不需要,请删除所有相关的jar子。
asm-3.3.jar asm-commons-3.3.jar asm-tree-3.3.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang3-3.1.jar freemarker-2.3.19.jar javaassist-3.11.0.GA.jar ognl-3.0.5.jar struts2-core-2.3.7.jar xwork-core-2.3.7.jar
如果你没有这些jar子,那就下载吧。
这里现在不推荐使用org.apache.struts2.dispatcher.FilterDispatcher 。所以编辑你的web.xml
Struts 2 index.jsp struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*
至
Struts2 Application struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* /index.jsp
我想这可以为你做的工作。
您使用的xwork-core jar版本似乎与其他jar版本不兼容。
尝试使用xwork-2.1.2.jar 。 我早先成功地使用过它。
如果它仍然不起作用,请确保使用与示例应用程序中相同的每个jar版本。
编辑 :
根据您的代码,尝试更改
public String execute() throws Exception { return "success"; }
至
public String execute() throws Exception { setName("Honey Bunny"); return "success"; }
看来,由于你没有调用setter,Struts正在会话中搜索属性名称。
关于您的问题,问题可能出在服务器或IDE工具中,因此分别在项目清理和服务器清理下清除它们。
如果您再遇到同样的问题,请从此链接下载struts2
struts2只需要从该文件夹中复制struts-blank.war并使用
the new workspace
运行一个程序(struts-blank.war包含测试程序),它肯定会起作用。
如果在类路径中没有该类,或者类路径中有该类的多个版本,则通常不会出现classdeffound错误。 使用这两个选项进行故障排除。 我在处理代码示例的JSP示例时遇到过这种情况。