首先从表现层介绍,后续后深入原理。

1,先简单介绍maven如何生成jar文件方便测试

<plugin><artifactId>maven-assembly-plugin</artifactId><version>2.4</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>Main.Main</mainClass></manifest></archive></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin>
配置了一个manifest标签来配置Main函数的入口。然后通过如下指令来实现打包。mvn assembly:assembly

2.自定义两个jar包,其中包含相同包名和类名

与export的导入顺序有关。只会加载第一个,并且运行正常。

3.自定义jar和jdk包, 其中包含相同的包名和类名

与export的导入顺序有关。同样是只会加载第一个,但是如果加载自定义的jar运行会报错。加载 jdk正常。

 protected Class<?> loadClass(String name, boolean resolve)throws ClassNotFoundException{synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loadedClass<?> c = findLoadedClass(name);if (c == null) {long t0 = System.nanoTime();try {if (parent != null) {c = parent.loadClass(name, false);} else {c = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {// ClassNotFoundException thrown if class not found// from the non-null parent class loader}if (c == null) {// If still not found, then invoke findClass in order// to find the class.long t1 = System.nanoTime();c = findClass(name);// this is the defining class loader; record the statssun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;}}

4.mvn jar包冲突常用命令

mvn dependency:analyze,mvn dependency:tree

 

转载于:https://www.cnblogs.com/qunan/p/7473482.html

有关两个jar包中包含完全相同的包名和类名的加载问题相关推荐

  1. 关于两个jar包中存在包名和类名都完全相同的jar包冲突问题

    2019独角兽企业重金招聘Python工程师标准>>> 最近弄webservice,我使用的jdk自带的wsimport工具来生成客户端代码,发现生成的代码具有编译错误,错误描述如下 ...

  2. Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略

    Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名.合并两个不同路径下图片文件名等目录/路径案例.正确加载图片路径)之详细攻略 目录 利用python ...

  3. 入门微信小程序(含实战) [第九篇] -- 下拉刷新和上拉加载

    下拉刷新和上拉加载是两个独立又密切联系的功能,上拉加载需要服务器端有分页机制,而下拉刷新除了重新获取信息外还要对之前的状态和页码进行初始化. 一个一个来吧. 服务器端分页 其实yii2早就已经为我们准 ...

  4. 肝了两宿才收集的17个超炫酷的 CSS 动画加载与进度条特效,绝对值得收藏!!!

    文章目录 一.圆形加载动画 二.上下跳动的圆球加载动画 三.3D立体加载动画 四.饼图加载动画 五.多色圆点波动效果的加载动画 六.制作顺时针放大的圆圈加载动画 七.制作小圆圈轮流放大的加载动画 八. ...

  5. maven jar包 私服 拉去问题,加载jar包时报错ReasonPhrase:unauthorized

    当我们的项目开发完成以后,可能要进行发布(如果是独立的项目,就不需要发布啦,如果是模块项目,那么就要发布到nexus里,供其他开发人员下载调用.) 要想发布项目到nexus里,必须通过<dist ...

  6. java -cp 引用多个包_javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题...

    其中,可能的选项包括: -g                                                       生成所有调试信息 -g:none                ...

  7. 不同的jar里边相同的包名类名怎么区别导入

    今天在做项目的时候遇到了一个很有意思的问题,折磨了我很长时间,不过最终还是解决了,特留此文纪念一下. 遇到的问题: 同样一段代码,在同事那就好使,在我这就找不到一个方法.引用的包也都是相同的,这种问题 ...

  8. 解决Android Studio加载第三方jar包,出现包重复加载的问题

    2015-02-13 0 个评论 来源:JavAndroid 收藏 我要投稿 通过Maven中央库添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了 一 ...

  9. [ERROR] 两个jar包中存在Qualified Name完全相同的引用冲突问题 解决方案

    分析:   最近在搞Jedis,在引入jedis-2.9.0.jar和commons-pool2-2.4.2.jar后初始化JedisPoolConfig时,发现很多属性无法设置(如最大空闲连接等)编 ...

最新文章

  1. Handle类的用法
  2. Python的__getattr__方法学习
  3. Java 理论与实践: 线程池与工作队列
  4. Linux 指令大全(3)
  5. JAVA_SE基础——24.面向对象的内存分析
  6. 解决df -h卡死问题
  7. vue 判断两对象是否一致_vue - 比较两个Json对象是否相等
  8. python 微信模块_Python实现清理微信僵尸粉功能示例【基于itchat模块】
  9. SEO网站搜索引擎优化软件
  10. Ubuntu18.04运行QQ音乐
  11. 用于视力恢复的脑机接口综述(一)
  12. WeQuant交易策略—EMV
  13. arcgis 属性表中起点终点创建线_一种GIS单线路网自动生成双线路网的方法与流程...
  14. [网页设计]如何在Photoshop里画虚线?
  15. 使用RootTools实现对Android系统文件的读写
  16. python与工程造价的联系_工程造价和工程预算是一个概念吗?
  17. IBM第二季度营收超预期 向云服务转型战略初见成效
  18. 软件性能测试方案怎么编写?
  19. 2022-2028年中国植物工厂行业发展动态及投资规划分析报告
  20. 2019程序员薪资大爆料!看看学个编程可以拿多少?

热门文章

  1. final修饰符,finally,finalize区别
  2. PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia)。据说yEd也很不错。...
  3. 保护 ASP.NET 应用程序的安全
  4. 30天敏捷结果(9):使用必须、应该、可以来确定每天事情的优先级
  5. Object类的用法(二)
  6. 怎样将Datatable中的数据直接导入到Excel模板上
  7. 一些SharePoint 2007开发的在线课程
  8. 邮件安全上市公司 Mimecast 的部分源代码被 SolarWinds 黑客盗走
  9. 呐,一个苹果洞赚10万美元的详细经验都在这里了~
  10. Thunderspy: 7个硬件漏洞,影响9年来所有安装 Thunderbolt 的电脑