在tomcat中部署Eclipse WebContent目录

时间:2012-03-11 18:34:59

标签: eclipse tomcat web-deployment-project

在Eclipse中,我创建动态Web项目时的文件夹结构是

[srikanth@hana Sample]$ ls -R
.:
build  src  WebContent

./build:
classes

./build/classes:

./src:

./WebContent:
index.html  META-INF  scripts  WEB-INF

./WebContent/META-INF:
MANIFEST.MF

./WebContent/scripts:
jquery-1.7.1.js

./WebContent/WEB-INF:
lib  web.xml

./WebContent/WEB-INF/lib:

正如您所看到的,有一个WebContent目录,当我从Eclipse工作区复制目录结构并放入Tomcat的webapps目录时,它无效。但是,如果我将WebContent目录下的所有目录和文件移动到上面的级别,它就可以正常工作。

这是应用程序下的Tomcat webapps目录中的文件夹结构:

[srikanth@hana Sample]$ ls -R 
.:
build  index.html  META-INF  scripts  src  WEB-INF

./build:
classes

./build/classes:

./META-INF:
MANIFEST.MF

./scripts:
jquery-1.7.1.js

./src:

./WEB-INF:
lib  web.xml

./WEB-INF/lib:

所以,现在我可以转到http://localhost:8080/Sample并可以正确转到index.html

  

我做错了什么?为什么它只是复制应用程序不起作用   从Eclipse到tomcat webapps目录直接?我为什么要这样做   改变目录结构?

3 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,。/ WebContent / index.html没有出现在Eclipse导出的.war中。在我使用Kepler Eclipse从旧系统重新创建一个工作项目到使用Luna Eclipse的新系统之后,这发生在我的新Eclipse系统上。

我通过转到Project / Properties / 部署程序集来修复此问题。我发现旧的工作系统有这个规则,而我的新的非工作系统却缺少这条规则......

Source      = /WebContent
Deploy Path = /

我在新系统上通过按“添加...”并添加缺少的规则来更正此问题。

答案 1 :(得分:2)

Eclipse允许将webapp直接部署到服务器,而无需自己复制任何内容。当您准备部署到测试或生产服务器时,它还允许生成可部署的war文件。

打开“服务器”视图,单击鼠标右键,然后选择创建新服务器。创建后,右键单击服务器并选择将Web应用程序添加到其中。然后Eclipse会将您的Web应用程序部署到服务器。

您不应该从Eclipse手动复制任何内容。如果您需要或想要这样做,那么您应该使用一些生成适当部署结构的ant脚本。 servlet规范中描述了这种结构。它应该在webapp的根目录下有一个包含以下内容的WEB-INF目录:

  • classes:包含类的目录
  • lib:包含应用依赖的所有jar文件的目录
  • web.xml webapp的部署描述符

Web容器下的所有其他目录和文件都可以由Web容器提供。

答案 2 :(得分:1)

  

当我从Eclipse工作区复制目录结构并放入时   Tomcat的webapps目录,它没有用。但是,如果我动了全部   WebContent目录下的目录和文件是上面的一个级别,它   工作得很好

不清楚if I moved all the directories and files under WebContent directory a level above, it worked fine这里的意思a level above以及Export as WAR的意思。

您应该做的不是手动复制任何内容,而是右键单击项目并选择Project.war选项。
这将创建一个名为WEB-INF的文件,其中包含您应该放在tomcat webapps目录下的{{1}}等正确的文件结构