myeclipse开发与部署原理

一直把myeclipse当成一个普通的工具来用,觉得很方便,并没有仔细研究其中的道理

 这两天在弄OA的时候突然考虑到这个问题

比如在添加struts,hibernate支持的时候,一旦添加这些jar包就被添加进项目同时myeclipse自动将其添加到了classpath中,这样整个项目中根据myeclipse按照classpath查找,就能找到所有jar包中的文件了。

但是可以发现,这样的jar包的位置都是在myeclipse中,使用的是myeclipse自身带的那些jar包,这样的方式存在缺点:

1.  将整个项目拷贝出来,如果在别的机子上导入就会出现问题。因为项目中对于这些jar包是引用原来的那个位置的jar包,而在别的机子上导入,那个位置就未必有那个jar包,而且大多数时候都没有

解决办法;将上述框架或者外部的jar包都手动放到WEB-INF/lib目录下,这样myeclipse会自动将其添加到classpath(具体可以查看整个项目的.classpath文件可以看到),这样即使出现迁移的时候整个项目的拷贝并不会出现任何问题。

当然,如果项目不涉及迁移性,就自己一个人使用或者一直在一台机子上使用,就不会产生任何的问题,你每次导入,你的myeclipse只要没有重装或者改变位置,它依然能够找到这些jar包,并不会出现问题

同时,对于部署web项目到服务器这样的问题,在部署的时候我们不必考虑jar包的问题,myeclipse会把classpath上使用到的jar包都部署到服务器比如tomcat上.

但是即便是将jar包放到WEB-INF/lib下,也并不是就不会有任何问题,由于放到那下面之后myeclipse会自动添加进classpath,不然项目的src下的文件就访问不到,但是一旦添加到classpath也就会自动在部署的时候将其添加到项目的lib目录中,所以有可能就会出现两套jar包。对于这样的问题解决办法就是:在WEB-INF/lib下添加jar包的时候不要使用子目录,比如同时添加struts,hibernate,JUnit时候,就直接在WEB-INF/lib下添加,不要简历struts,hibernate,JUnit这样的子目录,来区别不同的jar包。因为实际上这没有实际意义,在添加后我们使用的时候一般情况下不会查看,只是为了myeclipse和项目能够正常工作,所以在lib下建立子目录来以示层次并没有实际意义。这样即便WEB-INF/lib中jar包被添加到classath而会被再部署到如tomcat这样的服务器,但是由于本身的WEB-INF/lib中已经有,这个也会部署到那个位置,所以二者由于同名,只会保存一份,就不会出现有两份jar包的情况了


总结:

1. 在WEB-INF/lib下放置使用的外部jar包,并且不要新建子目录直接放置,可以解决上述提到的问题


你可能感兴趣的:(myeclipse)