【问题标题】:404 error in spring mvc app running on tomcat 7在tomcat 7上运行的spring mvc应用程序中出现404错误
【发布时间】:2014-04-24 17:33:06
【问题描述】:

我在一个 spring mvc 应用程序中收到一个 404 错误:The requested resource is not available,我正在 eclipse 中开发并使用 eclipse 中的 run as ... run on server 在 tomcat 7 的本地实例上进行测试。当应用程序启动应用程序的根 url 时会显示该错误。

自从welcome.jsp 或xml 配置文件上次运行后,我没有对其进行过更改。由于问题不在于配置文件,因此我不会通过添加它们来分散这篇文章的注意力。

另请注意,eclipse 控制台中没有错误日志或堆栈跟踪。

如何在不抛出此 404 的情况下让我的应用程序加载?

注意:我在下面给出我自己的答案。事实证明,解决方案是在 eclipse 的服务器选项卡中右键单击服务器实例,然后进行清理,然后发布,然后运行为...再次在服务器上运行,这导致应用程序加载有意义的堆栈跟踪,然后我很容易解决。正如我上面预测的那样,这个问题出在 eclipse 上,而不是配置文件上。这是一个有效的问题。没有必要否决它或投票关闭它。我希望它可以帮助其他人。

【问题讨论】:

  • 请直接将来源添加到问题中。
  • 发布您用于访问应用程序的 URL
  • @CodeMed 是的,但是在问题中直接发布源代码。如果链接变得过时,这个问题将变得毫无用处。
  • @CodeMed 够公平的。

标签: java eclipse spring jsp tomcat


【解决方案1】:

通常您不会将 html 或 jsp 文件放在 WEB-INF 文件夹下。通常你的目录结构是这样的:

[application root]
 |
 |_ index.html
 |_ index.jsp
 |_ media
 |    |_ css
 |    |_ js
 |    |    |_ jquery..js
 |    |    
 |    |_ images
 |_ META-INF
 |        |_ context.xml
 |_WEB-INF
         |_ classes
         |_ lib
         |    |_ jed-1.0.jar
         |    |_ gson-2.2.4.jar
         |    |_ log4j-1.2.8.jar
         |    |_ mysql-connector-java-5.1.18.jar
         |_ properties
             |_ log4j_CONSOLE.properties
             |_ log4j_FILE.properties

您将收到 404 错误,因为 servlet 容器正在应用程序根文件夹下查找 html 或 jsp 页面,而不是在 WEB-INF 文件夹下。此外,您的 web.xml 文件应包含以下内容以专门指向主页:

<welcome-file-list>
   <welcome-file>index.jsp</welcome-file>    
</welcome-file-list>

你的 web.xml 没有这个。希望这会有所帮助。

【讨论】:

  • @Alan 这不是真的,您可以使用“视图解析器”将您的视图放在 WEB-INF 中,这很常见,我认为是出于某些安全原因(我不记住)。
  • @Alan +1 如果您有兴趣,我想出了解决方案并将其作为另一个答案发布。再次感谢您尝试提供帮助。非常感谢您的宝贵时间。
【解决方案2】:

EDIT(我已经删除了带有 viewResolver 设置的部分)

我向您推荐以下想法之一:

  • 在 Eclipse 中使用您的 tomcat 检查设置,并检查您的更改是否已正确发布到 tomcat 中

  • 转到项目的属性并检查“部署程序集”并检查您看到的文件夹是否正常,有些东西 Eclipse 删除了此处的一些路径或未链接到正确的“部署路径” ,您可以添加更多或编辑

  • 最后一个:)。使用 tomcat 菜单“玩一点”。有时对我来说它可以清理服务器,或者重新启动或最大的一个:删除网络应用程序,清理,重新启动 tomcat 以确保应用程序没有重新启动(清理不能完美运行的东西)并添加再次应用程序。

我希望其中一些事情是有序的。 (如果不查看设置或检查 Eclipse 中的某些内容,很难想象更多)

【讨论】:

  • @CodeMed 您如何使用 Eclipse 部署应用程序?爆炸还是不爆炸?你确定你的eclipse部署正在寻找jsp文件吗?可能是您使用 eclipse 的部署做的不好,这就是它找不到文件的原因。
  • +1 尝试更深入地研究这一点。我现在就试试你的新建议。我刚刚尝试了您的 ViewResolver 更改并且 Eclipse 给了我一个错误,即 tomcat 7 无法启动,这可能与您的建议无关,因为我最近收到了该错误。我认为我的设置发生了一些变化,无论是在我的应用程序的其他地方,还是在 tomcat 中。我只是不确定该看什么或在哪里看。现在将尝试您的新想法。
  • 如果您有兴趣,我想出了解决方案并将其发布为另一个答案。再次感谢您尝试提供帮助。我非常感谢您的时间。如果我可以 +2,我会的。
【解决方案3】:

问题在于 Eclipse 中的损坏。所以解决方案是:

  1. 在 Eclipse 中单击服务器选项卡
  2. 右键单击服务器实例
  3. 选择干净
  4. 重复右键单击服务器实例然后选择发布
  5. 运行方式...在应用程序的服务器上运行

这 5 个步骤导致应用程序加载时出现有意义的堆栈跟踪错误,这涉及到我上次在 Eclipse 中工作时正在编辑的 _someclassname_controller.java 中的冗余 url 映射。当我解决了堆栈跟踪错误时,应用程序再次运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2011-06-14
    • 2018-08-24
    相关资源
    最近更新 更多