使用带有Struts 2 + Tomcat 7的Eclipse Kepler时资源不可用错误

好的,所以这是我用Java编写的第一个应用程序,我第一次使用Eclipse Kepler,Tomcat 7和Struts2,所以我很惊讶我甚至得到了这个,因为我所知道的是JS和Rails。 无论如何,这个基本的Web应用程序字面意思是输出字符串"Success Page!" 在运行Tomcat 7时在IDE中输入该URL。

我查看了Tomcat的成功页面,因此我知道运行时服务器正在运行。 另外,我的IDE中没有红色x标记。 该教程告诉我添加到我已完成的Web应用程序的URL getTutorial.action ,以呈现success.jsp视图。

但是,我在url localhost:8080/Struts2Starter/getTutorial.action收到此错误:

 message /Struts2Starter/getTutorial.action description The requested resource is not available. 

错误日志告诉我这个:

  SEVERE: Dispatcher initialization failed Unable to load configuration. - action - file:/Users/jasonrodriguez/Java/apache-tomcat-7.0.47/wtpwebapps/Struts2Starter/WEB-INF/classes/struts.xml:10:76 SEVERE: Dispatcher initialization failed Unable to load configuration. - action - file:/Users/jasonrodriguez/Java/apache-tomcat-7.0.47/wtpwebapps/Struts2Starter/WEB-INF/classes/struts.xml:10:76 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: Action class [org.koushik.javabrains.TutorialAction] not found - action - file:/Users/jasonrodriguez/Java/apache-tomcat-7.0.47/wtpwebapps/Struts2Starter/WEB-INF/classes/struts.xml:10:76 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:482) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:426) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:552) at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:292) at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:112) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:250) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) ... 16 more SEVERE: Error filterStart 

我的web.xml:

   Struts2Starter  index.html index.htm index.jsp default.html default.htm default.jsp   struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   struts2 /*   

我的struts.xml:

      /success.jsp /error.jsp    

我的TutorialAction.java:

 package org.koushik.javabrains.action; public class TutorialAction { public String execute() { System.out.println("Hello from execute"); return"success"; } } 

我的success.jsp视图:

      Insert title here   Success Page!   

我正在努力解决这个问题。 在Rails中,我会抛出一个binding.pry但在这里我没有丝毫的线索如何进行故障排除。 我能说的最好,也许路线在某个地方搞砸了。 任何见解都会非常有用,谢谢!!

当struts2 app bootstraps时,它从struts.xml加载配置。 它解析该文档并创建与配置相关的对象并将它们放入内部容器中。 然后使用此配置对象来实例化动作,结果,拦截器等真实对象。在应用程序中存在的配置中指定类很重要。 Eclipse只能编译Java文件甚至validationstruts.xml DTD,但它不会解决配置错误。 Struts2正在引导程序上执行此操作。 结果你得到了动作类无法解析的错误。 要修复错误,您应该提供类路径中存在的类引用。

  /success.jsp /error.jsp  

注意,结果名称"success"是结果的默认名称,可以省略。