在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目录直接?我为什么要这样做 改变目录结构?
答案 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目录:
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}}等正确的文件结构