为什么会出现这个诡异的问题呢这就涉及到java常见问题 build path引依赖包跟WEB-INFO/lib的区别:
WEB-INFO/lib:可以说是固定在一个地方;
eclipse编译项目的时候是根据build path的,如果不用eclipse来发布项目的话就会出现找不到jar,tomcat运行项目首先是在它自己的公共lib里找jar如果找不到的话就会去项目的WEB-INFO/lib目录找,如果找不到就报错
build path引用的jar可以引用lib下的jar,也可以引鼡硬盘上任何可以访问位置上的jar,但是,我推荐把需要的jar都放到lib下这样一旦发生jar包冲突、缺失的问题,我们可以直接到lib下查看如果放到其它位置,检查起来则相对麻烦
因为程序中只认识web-inf/lib中的包但是编译环境不是,如果编译环境在配置中说在某个地方有它要的包那么如果那个地方没有,也会提示警告信息
如果要在程序中正常运行,那么不管来自那里最后包都是放在web-inf/lib中的。
WEB-INFO/lib:可以说是固定在一个地方;
eclipse编译项目的时候是根据build path的,如果不用eclipse来发布项目的话就会出现找不到jar,tomcat运行项目首先是在它自己的公共lib里找jar如果找不到的话就会去项目的WEB-INFO/lib目录找,如果找不到就报错
build path引用的jar可以引用lib下的jar,也可以引鼡硬盘上任何可以访问位置上的jar,但是,我推荐把需要的jar都放到lib下这样一旦发生jar包冲突、缺失的问题,我们可以直接到lib下查看如果放到其它位置,检查起来则相对麻烦
放到lib下也是一个好习惯,引用其它位置的jar【通常某些同学喜欢用myeclipse自动添加对struts、spring、hibernate的支持】使用这种方式,很容易造成jar包冲突、缺失的问题尤其是团队协作的情况下,如果你引用了本地硬盘上的某个jar提交了.classpath文件到svn,别人检出后就会报錯,因为他的硬盘上的同一位置没有这个jar,而如果你放到lib下再提交,检出后他的lib下是有这个jar的因为lib是工程的一部分。
2.解决 你得首先确定伱的是编译环境报错还是程序报错。
因为程序中只认识web-inf/lib中的包但是编译环境不是,如果编译环境在配置中说在某个地方有它要的包那么如果那个地方没有,也会提示警告信息
如果要在程序中正常运行,那么不管来自那里最后包都是放在web-inf/lib中的。
所以此时你需要手动將需要的jar放到web-inf/lib下然后clean一下项目,重新发布一下就OK了。