在我们接到项目后,只用java的类库方法实现客户需求基本上是不可能的事情,这时候我们就要找寻有针对性的工具来帮助,这个行为就是导入jar包。本篇文章将从两个方面展开说明:
1.什么是jar包?
2.导入jar包的两种方式;
(笔者使用的IDE是MyEclipse 2015,本篇不涉及技术)
===============================分割线===============================
1.什么是jar包?
JAR,全称Java ARchive(Java 归档),顾名思义,jar肯定和java有两毛钱关系。jar是一种与平台无关的文件格式,可以将多个文件合成一个文件。透过本质来看:jar文件就是一个zip文件(你可以通过解压方式打开jar文件),它与zip文件的区别在于,jar文件中包含一个META-INF/MANIFEST.MF 文件(通过解压后可以找到),这是jar文件在生成时自动创建的。
说完本质,能不能浅显地解释下jar是个什么东西?通俗来讲,jar包就是一套别人已经写好,然后进行打包后的东西,你可以将jar包引入到你的项目中,然后就可以直接使用这些jar包中提供的工具(比如类和属性以及方法等)。比如我想通过java来对word文档(即docx和doc文件)进行操作,那java类库自带的方法是满足不了我的,于是我会去Google一下可以帮助java操作word文档的工具,又比如我找到了一个叫做Apache POI的工具,它提供的方法完全可以满足我的需求,我就会去找寻它的jar包,将其添加进我的项目,然后我就可以开始使用Apache POI来对word文档进行操作了。
2.导入jar包的两种方式
0)在导包之前有一些我认为需要知道的是IDE提供的视图:这里我打开了两种,记住图标,后面我会把两视图并排(即左右排布)
如果创建项目后没有主动开启两个视图(或不小心关闭了)的话,在Window -- Show View -- Package Explorer开启
展开目录看一下初始工作目录
好了,现在我们可以导入jar包了。
方式一:(建立相对路径链接)
(1)将你需要的jar包文件(以xwork-core-2.3.34.jar为例)复制到项目的WebRoot\WEB_INF\lib路径下
可以看到,当把jar包添加到lib下后,工作目录多了个Web App Libraries,此时只是把jar包复制到项目中,还不能使用。(但也有些IDE会很智能地自动帮你完成第二步,这种情况下就可以使用了)
(2)右击项目名 -- Properties -- Java Build Path -- Libraries -- Add JARs,选中刚刚复制到项目的jar包,确认
这时候可以看到“项目管理视图”多了新增的jar包,而“包管理视图”多了Referenced Libraries。
我们来理解一下Web App Libraries和Referenced Libraries
(1)Referenced Libraries存放的是编译环境下使用的jar包。什么意思呢?打个比方,我使用引入的xwork-core-2.3.34.jar编写完java代码了,在运行前需要将它编译成.class文件吧,于是在编译的时候,使用的就是Referenced Libraries中存放的xwork-core-2.3.34.jar,但是这个jar包只是个“引用”,它的本体在lib下呀,这就是我们在把jar包复制到lib下还需要add jars的原因——不仅要导入,还要配置,才能让它能起作用。
(2)Web App Libraries存放的是运行环境下使用的jar包。就是说,你在运行项目的时候所需要使用的jar包都在这里。其主要作用是在MyEclipse(其他IDE或许没有这个库,如IntelliJ IDEA)导出war包的时候,将其目录下的所有jar包或者项目中的工程引用都导出到WEB-INF/lib文件夹下。再说白一点,就是以便项目拷贝到别人的机子上也能正常运行,所以当别人复制了你的项目到自己的计算机上发现“诶怎么跑不动”的时候,可以试着检查Web App Libraries。
方式二:(建立绝对路径)
(1)右击项目名 -- Properties -- Java Build Path -- Libraries -- Add External JARs,选中想要添加的jar包,打开确认
可以看到jar包已经添加到项目中了,注意:在包管理视图中只有Referenced Libraries,没有Web App Libraries,这意味着什么呢?由于Referenced Libraries指向的路径是本地的jar包,所以在编译时,项目会去引用我本地的jar包,这样的话非常不方便,实践说明:
1.编写一个名为MyServlet的类,让它继承某个类,点击浏览
2.输入ActionSupport,可以看到菜单项栏有ActionSupport类,它是在com.opensymphony.xwork2包下的一个类
3.而com.opensymphony.xwork2包是在我的D:\JavaWeb\SourceCode\xwork-core-2.3.34.jar包中找到的
好的,能通过本地jar包确实能找到这个包里的类,这一步乍看之下很美好没毛病吧,MyServlet类就建立好了
这时候我将xwork-core-2.3.34.jar从D:\JavaWeb\SourceCode挪动到D:\JavaWeb\SourceCode\temp
刷新一下项目就会发现工作目录的jar包不见了,MyServlet.java报错了,提示无法完成com.opensymphony.xwork2.ActionSupport的导入
Properties中的Libraries页也显示jar包异常(其实就是路径改变了,找不到了)
往远了想就是将此项目拷贝到别人的设备上那也是运行不了的。
综上所述,建立绝对路径还真不方便,它每一次改变本地的jar包路径都要再次将其导入项目。
导入jar包实际上就是建立一种链接(相对路径链接 或者 绝对路径链接),并不是单纯的copy式导入。还有其他的导入方式(如用户自定义,Maven管理等)在此不做赘述,技巧还是自己慢慢去摸索更有印象和成就感啦,以上两种方式只是学习初期最常用的两种导入方式,了解原理后多jar包的导入,不同IDE的导入,不同设备的导入都可以轻车熟手啦。
===============================分割线===============================
如有表述不清的内容,请联系我;如有表述错误的内容,恳请友好指出。 ——L.L