Code Bye

关于Maven打包在tomcat7下运行问题

现在我用maven打的已经在tomcat7的webapps目录了,但似乎项目没有读取web.xml文件,项目启动时没有加载sping配置。
项目结构如下图:



web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	                         http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<!-- Spring的log4j监听器 -->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<!-- 字符集 过滤器 -->
	<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- Spring view分发器 -->
	<servlet>
		<servlet-name>dispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

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

启动时没有加载spring上下文,不知道什么原因

把启动的错误信息发出来看看, 你这个目录结构没有问题。  你可以把除了你的项目victor_test以外的其它文件都删除, 那些都没有用。  看看能不能起来
引用 1 楼 whos2002110 的回复:

把启动的错误信息发出来看看, 你这个目录结构没有问题。  你可以把除了你的项目victor_test以外的其它文件都删除, 那些都没有用。  看看能不能起来

没有错误信息

信息: Undeploying context [/victor_test]
2014-7-11 14:30:29 org.apache.catalina.startup.HostConfig deployWAR
信息: Deploying web application archive D:\apache-tomcat-7.0.40\webapps\victor_t
est.war
引用 2 楼 javaliuliu 的回复:
Quote: 引用 1 楼 whos2002110 的回复:

把启动的错误信息发出来看看, 你这个目录结构没有问题。  你可以把除了你的项目victor_test以外的其它文件都删除, 那些都没有用。  看看能不能起来

没有错误信息

信息: Undeploying context [/victor_test]
2014-7-11 14:30:29 org.apache.catalina.startup.HostConfig deployWAR
信息: Deploying web application archive D:\apache-tomcat-7.0.40\webapps\victor_t
est.war

这是全部的信息?  那估计你只能换tomcat试试了

引用 3 楼 whos2002110 的回复:
Quote: 引用 2 楼 javaliuliu 的回复:
Quote: 引用 1 楼 whos2002110 的回复:

把启动的错误信息发出来看看, 你这个目录结构没有问题。  你可以把除了你的项目victor_test以外的其它文件都删除, 那些都没有用。  看看能不能起来

没有错误信息

信息: Undeploying context [/victor_test]
2014-7-11 14:30:29 org.apache.catalina.startup.HostConfig deployWAR
信息: Deploying web application archive D:\apache-tomcat-7.0.40\webapps\victor_t
est.war

这是全部的信息?  那估计你只能换tomcat试试了

不是吧。。。应该还有别的原因吧

我换了一个tomcat但仍然不行,启动日志如下:
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployWAR
信息: Deployment of web application archive C:\Users\Administrator\Documents\apa
che-tomcat-7.0.54\webapps\victor_test.war has finished in 1,327 ms
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory C:\Users\Administrator\Documents\apach
e-tomcat-7.0.54\webapps\docs
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory C:\Users\Administrator\Documents\a
pache-tomcat-7.0.54\webapps\docs has finished in 58 ms
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory C:\Users\Administrator\Documents\apach
e-tomcat-7.0.54\webapps\examples
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory C:\Users\Administrator\Documents\a
pache-tomcat-7.0.54\webapps\examples has finished in 398 ms
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory C:\Users\Administrator\Documents\apach
e-tomcat-7.0.54\webapps\host-manager
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory C:\Users\Administrator\Documents\a
pache-tomcat-7.0.54\webapps\host-manager has finished in 77 ms
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory C:\Users\Administrator\Documents\apach
e-tomcat-7.0.54\webapps\manager
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory C:\Users\Administrator\Documents\a
pache-tomcat-7.0.54\webapps\manager has finished in 77 ms
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory C:\Users\Administrator\Documents\apach
e-tomcat-7.0.54\webapps\ROOT
2014-7-11 15:34:34 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory C:\Users\Administrator\Documents\a
pache-tomcat-7.0.54\webapps\ROOT has finished in 58 ms
2014-7-11 15:34:34 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
2014-7-11 15:34:34 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
2014-7-11 15:34:34 org.apache.catalina.startup.Catalina start
信息: Server startup in 2066 ms

都没有报错,你在这里忽悠我!  看看页面能访问么?  没日志可能是你log配置有问题,没有打印在控制台
问题解决了,实际上是报错了。只是没在控制台打印出来,不知道为什么配置到eclipse后就可以看见异常了。提示却spring-webmvc包,所以dispacherServlet没启动。
我现在还有两个疑问:
1maven project项目与dynamic web project有什么区别,为什么不统一
2eclipse里可以看见所有日志,但用bin文件启动tomcat缺看不见异常,具体原因是什么。
希望路过的童鞋解释下,准备结贴给分了,100分啊

100分
引用 7 楼 javaliuliu 的回复:

问题解决了,实际上是报错了。只是没在控制台打印出来,不知道为什么配置到eclipse后就可以看见异常了。提示却spring-webmvc包,所以dispacherServlet没启动。
我现在还有两个疑问:
1maven project项目与dynamic web project有什么区别,为什么不统一
2eclipse里可以看见所有日志,但用bin文件启动tomcat缺看不见异常,具体原因是什么。
希望路过的童鞋解释下,准备结贴给分了,100分啊

没有什么区别, maven有自己特有的目录系统, 但最终也是打包为跟普通web项目一样的结构。
第个问题还真没遇到过, 不过应该是tomcat配置的问题吧,  你可以把eclipse生成的tomcat目录下面的配置跟你自己的tomcat替换一下,试试看有没有效果


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于Maven打包在tomcat7下运行问题