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示例时遇到过这种情况。