作为一个小白,经常使用eclipse开发,想引入什么依赖直接用buildpath也能实现。
每天使用eclipse开发调试已经成为习惯,需要什么JAR包的时候只需要configure Build Path引入一个即刻轻松搞定,但突然有一天当我需要打一个JAR包的时候我却发现自己还不会。当时的情况是酱紫滴:
(1)项目为所依赖的JAR包的目录结构图。
(2)项目本身目录结构图
从上图不难看出GeneralTest项目已经依赖了dependency项目,在eclipse中调试运行木有任何问题。所以我认为理所应当的认为打个JAR包应该也没有任何问题,然后我就:
(1)在项目上右键-->Export
(2)然后选中JAR file并Next
最后直接选中要打成JAR包的项目FINISH就打出了一个JAR包,随后我就很随意的跑了一下jar包吧:
结果。。。自然是悲剧,抛出了NoClassDefFoundError的错误,再来看看JAR的目录结构,果然在com.csii下面只有一个parent文件夹,了解打包后目录结构的人应该知道JAR目录结构应该是酱紫的:
---com---csii---parent
|
----dependency
也就是JAR包中的目录结构是主项目中的目录结构和被依赖项目的目录结构的并集。
这就是问我们的程序跑步起来的症结所在。对!!就是打包问题,那么问题就来来了。挖。。。不,我们应该如何打包才能打出一个包含依赖的JAR包呢,其实很简单:
只要在打包的时候选择这个Runnable JAR file,下面就是选择第一个选项(Extract required libraries into generated JAR)就可以从依赖JAR中抽取目录结构和文件并和主项目的目录结构合并在一起。
只要这样,我们的项目就可以顺利跑起来了。说起来,其实就是2个选项的差异而已,我却废了这么大的篇幅,截了这么多图,真是让人看了有种想吐血的赶脚,不过作为一个小白就是要从这样的阶段开始,尽管繁荣了点,也算是个良好的开端。碎觉鸟~
参考: