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

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 loaded
Class<?> 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 stats
sun.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

 

最新文章

  1. Unity3D框架插件uFrame实践记录(一)
  2. R语言作为BI中ETL的工具
  3. (十九)WebGIS中I查询的原理及设计(包含AGS、GeoServer、Supermap)
  4. 找到SQL Server数据库历史增长信息
  5. NVARCHAR 和VARCHAR区别和使用
  6. 解决svn “clean up&quot; 失败
  7. MVC5学习相关资源整理
  8. hosts文件的路径
  9. MessageBox不能前置显示的问题
  10. Swift - 环形进度条(UIActivityIndicatorView)的用法
  11. GC算法精解(五分钟教你终极算法---分代搜集算法)
  12. IT题库7-线程加锁
  13. 2018-计算机系机试(第二批)-D-最小差值
  14. 自动化测试基础篇--Selenium元素定位
  15. Greenplum(4.3.73)集群安装手册
  16. Python 对图片进行人脸识别
  17. Python_建造者模式
  18. SOA和微服务架构的区别?
  19. 【noip模拟赛1】古韵之乞巧 (dp)
  20. 20170711xlVBA批量制图一例

热门文章

  1. 洛谷P3178 树上操作 [HAOI2015] 树链剖分
  2. PHP $_SERVER[&#39;SCRIPT_FILENAME&#39;] 与 __FILE__ 的区别
  3. java 软件安装
  4. android 知识汇总
  5. 编程实现类似Linux系统的cp功能
  6. xshell 6评估已过期解决办法 / xftp 6 评估已过期解决办法
  7. JMeter_方案上架,遇到的问题及解决
  8. cocos2d-x 编译 安卓(android)apk文件
  9. Asynchronous Programming
  10. Linux. 计划任务 时间格式