问题描述
- jar包的挑选和版本需要注意哪些问题?
-
想了解一下在搭框架的时候对jar包这方面需要注意的问题有哪些
解决方案
工程和jar包引用的顺序,Eclipse通过classpath来定义类的引用关系,通常,我们用的最多的是源代码,源码工程,jar包,它们的顺序很重要,这也是导致jar包版本不一致的一个原因,想象一下,目的工程依赖A工程和B jar包,同时A工程也依赖B jar包,当然也引用了它,那么目的工程到底去寻找直接引用的B jar包呢还是引用A工程依赖的jar包?这三者之间的顺序有关系,我不建议你凭感觉行事,最有效的办法就是设置在B jar包的入口处设置一个断点,看它到底依赖的是哪个jar包。
很多工程都有配置文件,拿我们公司的来说,客户端有启动顺序xml配置文件,服务器端有服务器服务xml配置文件,有没有想过再Eclipse环境下是按什么方式找这些配置文件的,它查找目录的顺序又是怎样的?如果这些配置定义重复了会不会有问题?我就遇到过这样一种情况,A客户端定义了一份启动配置文件xml,平台客户端定义了一份启动配置文件xml,A客户端依赖平台客户端,最后它找到了两份启动配置文件xml,每一个task任务都重复加了一次,导致客户端启动出现问题。
说了上面三点我们经常遇到的问题根源,那么我再说说解决jar包版本问题不一直的最佳途径,首先,你要对哪些工程依赖哪些包,而这些包又是干什么的要熟悉,然后,将这些jar包都整理成一个版本统一放在一个文件夹下,然后将Eclipse的wokespace下工程依赖的jar包都指向这个文件夹下,保证整个wokespace下面用到的jar包都是同一个jar包。然后,建立工程,最重要的一点是,整个过程保持头脑十分清晰,不要犯低级错误,否则你会疲于奔命,而且,你做的每一个操作你必须要给出足够的理由。第一阶段是编译器通过,保证不会出现编译错误,第二阶段就是程序运行正常,这一阶段通常都是程序启动时会遇到很多问题,这种问题最霸道的解决办法就是深入代码!不要觉得这是一个小问题,深入代码可能会浪费你很多时间,你错了,如果你不深入代码,仅仅凭感觉操作的话,你会浪费十倍的时间!
解决方案二:
主要是版本冲突的问题,jar之间互相有依赖的,比如spring,可能依赖apache commons,log4j等
一般都是有固定版本的依赖,所以做好是用maven搭建项目,这样依赖的jar一清二楚
解决方案三:
主要是冲突的问题和缺少jar包的问题,其他的好像都不重要
解决方案四:
工程和jar包引用的顺序,Eclipse通过classpath来定义类的引用关系,通常,我们用的最多的是源代码,源码工程,jar包,它们的顺序很重要,这也是导致jar包版本不一致的一个原因,想象一下,目的工程依赖A工程和B jar包,同时A工程也依赖B jar包,当然也引用了它,那么目的工程到底去寻找直接引用的B jar包呢还是引用A工程依赖的jar包?这三者之间的顺序有关系,我不建议你凭感觉行事,最有效的办法就是设置在B jar包的入口处设置一个断点,看它到底依赖的是哪个jar包。
很多工程都有配置文件,拿我们公司的来说,客户端有启动顺序xml配置文件,服务器端有服务器服务xml配置文件,有没有想过再Eclipse环境下是按什么方式找这些配置文件的,它查找目录的顺序又是怎样的?如果这些配置定义重复了会不会有问题?我就遇到过这样一种情况,A客户端定义了一份启动配置文件xml,平台客户端定义了一份启动配置文件xml,A客户端依赖平台客户端,最后它找到了两份启动配置文件xml,每一个task任务都重复加了一次,导致客户端启动出现问题。
说了上面三点我们经常遇到的问题根源,那么我再说说解决jar包版本问题不一直的最佳途径,首先,你要对哪些工程依赖哪些包,而这些包又是干什么的要熟悉,然后,将这些jar包都整理成一个版本统一放在一个文件夹下,然后将Eclipse的wokespace下工程依赖的jar包都指向这个文件夹下,保证整个wokespace下面用到的jar包都是同一个jar包。然后,建立工程,最重要的一点是,整个过程保持头脑十分清晰,不要犯低级错误,否则你会疲于奔命,而且,你做的每一个操作你必须要给出足够的理由。第一阶段是编译器通过,保证不会出现编译错误,第二阶段就是程序运行正常,这一阶段通常都是程序启动时会遇到很多问题,这种问题最霸道的解决办法就是深入代码!不要觉得这是一个小问题,深入代码可能会浪费你很多时间,你错了,如果你不深入代码,仅仅凭感觉操作的话,你会浪费十倍的时间!
解决方案五:
如果你是使用SSH的话,强烈建议你使用MyEclipse来进行搭建,会省很多事情。