前段时间在做项目的时候,用eclipse构建的maven工程部署到tomcat下面去时,发现tomcat的web-inf下面的lib目录是空的, 当时弄了好长时间,最后实在没辙了,就手动把所有的依赖拷到web-inf的lib下面去,但是每次重新部署时,eclipse自动部署又将lib目录清 空,当时那叫一个郁闷,后来我看了下别人的classpath文件,发现我的classpath跟别人的不同点
图1:
图2:
发现在加了上述attributes;标签后,能正常的部署项目,并且tomcat lib下面也有所需的jar了。
最近,有人问为什么我的jdbc驱动能在main方法里正常访问数据库,当我部署到tomcat下面时候,老是报 ClassNotFoundException,提示找不到驱动类,远程连了一下,发现他的tomcat web-inf下面的没有mysql驱动包,但是他在工程里却是以exteneral jar的形式添加到了classpath下面,当部署时候tomcat下面却没有jar,当时第一感觉是classpath出问题了,倒腾了好长时间,最 后终于解决了,先把解决方案详述如下(注:本人用的eclipse版本是eclipse jee 3.7(indigo),tomcat 6.0.29):
eclipse配置的tomcat默认发布项目不会部署到tomcat的安装目录去,而是在你的workspace目录下面的\.metadata \.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps这个文件夹下,这也就是为什么有人会问为 什么我明明项目部署成功了,可是我去tomcat下的webapp下面却没有我刚刚发布的项目,其实休该一下配置,当然,在改之前,你的先将tomcat 下面自己部署的项目删除,(tomcat自带的几个doc,root之类的不用删),双击server下的tomcat,会弹出tomcat的配置,如上 图,在此,我们选择第二项
将wtpwebapps改为tomcat默认的webapps,保存,这样当你在部署项目的时候项目就会自动部署到tomcat安装目录下的 webapps下面去了,现在回到发布项目时候tomcat web-inf lib目录为空的情况,右键点击工程,属性(properties),选择deployment assembly选项,单击add按钮,如下图:
在弹出的对话框选择java build path entries
next后会出现你加的external jar包
finish完成以后在启动tomcat,去webapp下面验证看看jar包是否随工程一起部署。