Thursday, December 27, 2012

将commons-beanutil.jar导入项目

只有jar包可以导入lib并运行,zip,rar都不可以。

WEB项目的导入步骤:- lib引入包

1. 直接将jar文件拖到web-inf下的lib文件夹,Myeclipse在package explorer中会自动生成Referenced Libraries. 而WEB-INF下的lib没有显示出jar包,其实jar包确实存在web-INF/lib这个文件夹下面. 

-----------------------------------------------------------------------------------------------------------------------------------------

关于eclipse中build path与lib引入包的区别,该如何解决

关于eclipse中build path与lib引入包的区别
一个web工程需要导入jar包(比如mysql数据库驱动、struts2.0支持等等)。明明已经右键build path中引入了这些jar包,为什么编译并发布到tomcat时,这些jar包都没有被加过去。老师跟我说需要手动把这些包拷贝到工程的WebContent/WEB-INF/lib文件夹下,却没有给出一些合理的解释,自己上网谷歌、百度未果。所以希望大家能够帮忙解释下这是为什么,是不是可以通过设置使得eclipse在编译发布时自动将这些jar包带到tomcat里。

------解决方案--------------------------------------------------------
build path只不过把路径写入到classPath下面 不会吧包拷到WEB-INF/lib目录下
这种方法本机跑起来是没问题 但是移到别的机子上就会少包
而直接把包拷到WEB-INF/lib目录下面 不写classPath会项目直接就会报少包
只有这2中方法一起做才是最好的
------解决方案--------------------------------------------------------
这是编译器跟tomcat相关的问题,现在的编译器设计的时候你加入build path只是管软件的开发过程,而真正软件发布过程又是另外的过程,并不是开发过程引用到的包一定要在发布阶段用到,所以现阶段web开发部署到容器当中需要手动将包加到web-inf/lib文件夹下。
你明确一点,build path是在开发阶段,而放到tomcat下面则是软件部署。如果你的开发阶段习惯良好,是引用的自己工厂的web-inf/lib文件夹那就好很多,如果是引用其他地方的就需要手动拷贝。


java.lang.NoClassDefFoundError: org/apache/commons/beanutils

       伤心的事,调了一上午,仍然没结果,而最后的原因很吃惊。
       首先介绍一下情况:
       我得要用同事写的jar包里的某个方法,而这个方法里面有这么一句:BeanUtils.setProperty(bean, fieldName, value)。一直报错。而来没办法,直接引用源码,发现测试类不报错,但是web调用报错。即通过url访问action会报错,而写的Test.java静态引用正常。action和test的代码及配置都是一样的,唯一不同的就是一个通过服务器访问,一个直接运行。
       报错信息节选:
      java.lang.ClassNotFoundException: org.apache.commons.beanutils.BeanUtils
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
   ……
     原因找了很久,终于一个激灵,终于想起来了,追究到底还是jar的问题。
     eclipse可以手动地配置jar包路径,这样的jar包Java Application可以正常使用,但是web工程不行,tomcat服务器只认WEB-INF/lib下的jar包。之前曾经使用手工引用的jar 包,服务器根本就跑不起来,而今天讨论的这个问题确实比较隐蔽。
     解决方法相当简单:把之前手工引进的commons-beanutils.jar直接拷到WEB-INF/lib下面。
     总结,报错时,确实应该先看看环境,是不是环境配置不对,很多情况下并非代码问题,环境很重要。



Eclipse - Java Build Path

http://www.tutorialspoint.com/eclipse/eclipse_java_build_path.htm



eclipse部署时候不拷jar包到web-inf上面的lib目录解决方法

www.MyException.Cn   发布于:2012-08-31 12:55:03   浏览:51次
eclipse部署时候不拷jar包到web-inf下面的lib目录解决办法
        前段时间在做项目的时候,用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包是否随工程一起部署。

No comments:

Post a Comment