JRE System Library: 指Java SE 的常用库文件集合,建立普通的Java项目均会使用;
java EE 5 Libraries: 指Java EE的常用库文件的集合,建立Web项目会用到这个库集合与Java SE的库文件集合;
Referenced Libraries: 指你项目中所使用的第三方库文件集合.如果你把项目所需要的其他JAR包直接加在 项目->属性->Java Build Path -> Libraries 中的时候,MyEclipse 会自动将这些JAR包归类到一个集合中, 并取名为 Referenced Libraries , 显示在项目中.
Referenced Libraries是编译环境下使用的JAR包,
所谓编译环境下使用的JAR包, 就是说你在Eclipse中进行源文件的编写的时候,所需要引用到的类都从Referenced Libraries这个集合中的JAR包中拿;
WebRoot /web-inf/lib中的JAR包是运行时环境下使用的JAR包,所谓运行时环境下使用的JAR包,就是说你在运行你的项目的时候所需要使用的JAR包的集合;
Java中的Jar是如此的重要,以至于没有他们,我们就不能做出如此艺术的程序:封装、模块化、复用等等(无ant、marven方式) 。
今天,我就来整理一些有关项目中的jar包添加管理的方法以及常见问题的解决:
1、jar导入到我们的web项目中的classpath下
1)这里呢,一种方法是,直接用MyEclipse里自带的相关的项目jar包,右击项目“MyEclipse”菜单,选择对应的jar包就OK了,例“Add Spring Capabilities”,并且可以设置Spring的一些配置信息,不错的可视化操作;
2)添加外部的jar包到web项目的lib包下,右击项目“Properties”-->“Java Build Path”-->“Libraries”选项卡(当然了,此操作下,不仅仅这一种添加jar包的方式);
3)自己手动拷贝jar文件到项目的lib包下,具体操作只要把要添加的jar文件拷贝到MyEclipse中的workspace下的lib包里就好了;
至此,jar文件的添加就OK了,so easy!jar是加进去了,但这几种有什么区别,以后如何管理呢,接下来看看第2点
2、三种jar包添加方式,都行得通,很OK,那么要如何择决呢
1)这种方式,jar文件直接链接到MyEclipse的文件下,并没有拷贝到WEB-INF/lib目录下,不得用项目的发布、移植,可能会出现jar找不到的情形;
2)选择性比较的强,可以随意的加jar包,只要在你本机存在就可以了,链接的也是jar文件的绝对路径,缺点同1;
3)直接添加到WEB-INF/lib目录下,移植性强,可操作性也强。
总而言之,第3)种jar包导入方式,个人觉得还是不错的了!
3、显示/隐藏项目里的jar文件
不同的开发人员,都有着他固有的习惯,有的人就觉得把jar包显示在开发视图里太碍眼,看起来不舒服,复杂。而有些人呢,他就想研究看看到底运用了哪些技术,导了哪些jar包,并且通过点击jar包里的class文件直接查看源码(假设先前有导入源码)。所以呢,这里就牵涉到了一个jar包的显示与隐藏问题了:在Package Explorer这个窗体中,右上角有个下拉小三角,点击-->“Filters”-->“Name
filter patterns(matching names will be hidden)”,在这一选项下填有*.jar,勾上复选框即表示这一类的文件不显示,多个类型之间可用“,”分隔。
4、在Eclipse工程的Java Build Path设置中,可以通过加入第三方的jar包,但是,我发现是有好几种方法来完成这个操作的,有“Add jars”,“Add Externel jars”,“Add library”,“Add Classes Loader”等,这几种方式有什么区别吗?
add jar是表示从你的工程里添加JAR,前提是你把jar已经放到自己的工程目录里。
add external jar表示这个jar的位置需要URI来定位,需要给出全路径。
add library 是一些已经定义好的jar的集合,因为它们经常是一起用,所以简化了些操作,比如你做RCP开发的时候就会有个plugin library包含了运行工程所需要的基本插件。
Add classes Loader -- 这个应该是 add class folder吧?这个跟添加jar是一个意思,就是告诉ClassLoader去哪找class
5.当出现java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener类似这种找不到Listener的异常时,要切记spring的jar包一定要放在工程的lib下这样才能避免这个错误的发生。
补充:虽说无论用什么方式导入包在本地运行都是一样的,但实事上我运行时,有的只有Java Build Path才起作用,有的只有导入到lib下才行。用Java Build Path导入包和把包复制到lib下是有区别的,它俩其实不会冲突,也没有什么关系的,Java Build Path是我们编译需要的包,在比如在import ***.***.***时如果没用Java Build Path导入包的话类里面就有红叉,说不识别这个类;导入到lib下是程序运行时需要的包,即便用Java
Build Path导入过的包,没放到lib下,运行项目时会出现ClassNotFoundException的异常。