码迷,mamicode.com
首页 > 系统相关 > 详细

eclipse中Build Path 导入的包和复制到 lib 包的区别

时间:2017-05-30 23:04:36      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:share   font   javase   类加载   mon   rar   找不到类   生成   targe   

Java Build Path是我们编译需要的包,在比如在import ***.***.***时如果没用Java Build Path导入包的话类里面就有红叉,说不识别这个类,build path只是是建立项目对本地存放的包的引用,并没有将包复制到项目中。

复制到lib下是程序运行时需要的包,即便用Java Build Path导入过的包,没放到lib下,运行项目时会出现ClassNotFoundException的异常.

 

 以下内容摘自:http://s343174147.iteye.com/blog/1986307

对于java web项目,它最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。
比如tomcat应用服务器,它有其自己的类加载器,根据J2EE的规范去%web-project%/WEB-INF/lib的规范去找相应的lib,这就是为什么我们发布的WEB应用要符合那个格式
以Tomcat典型结果为例,它的目录结构分别对应四个不同的类加载器,关系如下:

common      ---   CommonClassLoader

server          ---    CatalinaClassLoader

shared         ---    SharedClassLoader

webapps     ---    WebappClassLoader

我们的 web 应用都是部署到 webapps 目录下,而WebappClassLoader加载器专门负责加载 webapps 下所有web项目的 WEB-INF 下的类库和类文件。而我们通过 build path 引入的 jar 包自然不会被 WebappClassLoader 加载器加载,所以才会出现 ClassNotFoundException 。

eclipse引用library 是为了编译代码生成WEB-INF/classes里面的class文件使用,使用eclipse j2ee IDE时,会将WEB-INF/lib中所有的lib自动加入到 library中
eclipse工程下的library是用来编译里面的src中java文件的
实际发布到tomcat时,仅仅只复制了WEB-INF/lib里面的jar包,所以会出现eclipse可以正常编译但tomcat运行是找不到类的情况。

 

eclipse中Build Path 导入的包和复制到 lib 包的区别

标签:share   font   javase   类加载   mon   rar   找不到类   生成   targe   

原文地址:http://www.cnblogs.com/Allen-win/p/6921520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!