我正在尝试将Eclipse中的多模块Maven项目部署到本地Tomcat。该项目具有以下结构:
root [packaging: pom]
|
|--- domain [packaging: jar]
|
|--- manager [packaging: jar]
|
|--- web [packaging: war]
我将所有项目导入Eclipse,然后将“Dynamic Web Module”方面添加到Web项目
在同一对话框的Runtimes选项卡中,我将项目配置为使用(本地)Apache Tomcat v6.0运行时。
然后我右键单击该项目,然后从菜单中选择“运行方式 - >在服务器上运行”。在下面的对话框中我(再次?)选择“Tomcat v6.0 Server”
在以下对话框中,我将Web项目添加到已配置项目列表
当我点击“完成”时,从控制台消息中显示服务器已启动,但当我在浏览器中转到http://localhost:8080/web/时,我得到了404.我也尝试了http://localhost:8080/还会返回404,我做错了什么?
答案 0 :(得分:9)
当我添加动态模块时Eclipse错误地创建了一个WebContent目录。我删除了此目录,并对名为.settings
的{{1}}目录中的文件进行了以下更改
org.eclipse.wst.common.component
答案 1 :(得分:0)
我也尝试了http://localhost:8080/,并且还返回了404。
我推断Tomcat没有监听端口8080,因为行为是将$CATALINA_HOME/webapps/ROOT/index.html
的内容显示为欢迎页面。您可能希望验证Tomcat是否配置为首先侦听端口8080。 $CATALINA_HOME/conf/server.xml
文件的条目应类似于下面列出的条目:
<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
...
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
如果你有这个权利,但是你看到了404响应,那么显然配置有问题。 $CATALINA_HOME/webapps/ROOT
不存在,或者您可以通过查看$CATALINA_HOME/logs
目录中的日志来确定其他内容。
当我点击“完成”时,从控制台消息中显示服务器已启动,但当我在浏览器中转到http://localhost:8080/web/时,我得到了404
假设Tomcat已成功配置,如果您在web.xml
中没有列出欢迎文件,则可能会出现此描述的行为。 welcome-file-list
的结构类似于下面列出的结构:
<web-app>
...
<welcome-file-list>
<welcome-file>somePage.html</welcome-file>
</welcome-file-list>
...
</web-app>
很明显,您需要在欢迎页面中拥有有效的HTML。您还可以使用JSP页面作为欢迎页面。
Maven与Eclipse的集成
我将它放在一个单独的部分中,因为我不确定您的Eclipse项目是否首先正确设置。通常,可以使用m2eclipse
或maven-eclipse-plugin
中的任何一个在Eclipse中配置WTP项目。
如果您已将Maven特性(使用m2eclipse插件)添加到项目中,那么您必须知道m2eclipse有可能还原任何可能与其生成的更改冲突的更改。例如,m2eclipse会将Java facet版本设置为pom.xml中为source
指定的maven-compiler-plugin
版本。
此外,在服务器上部署应用程序之前运行package
阶段可能很重要。在某些情况下,我被这种行为绊倒了。