Maven、Java的包管理的理解

Java的包管理机制
1. 什么是包
  • JVM的工作被设计得相当简单:
    1.执行一个类的字节码
    2.假如这个过程中碰到了新的类,加载他
  • 那么去哪里加载他呢?
2. 类路径(Classpath)
  • 什么是类路径:-classpath/-cp
  • 类的全限定类名(目录层级)唯一确定了一个类
  • 包就是把许多类放在一起打的压缩包
3. Classpath hell
  • 传递性依赖是指你依赖的类还依赖了别的类
  • 全限定类名是类的唯一标识
  • 当多个同名类同时出现在Classpath中,就是噩梦的开始
4. 什么是包管理
  • 你要使用一些第三方类,就要告诉JVM从哪里找
  • 包管理的实质就是告诉JVM如何找到所需的第三方库以及成功地解决其中地冲突问题
5. Maven——划时代的包管理工具
  • 约定优于配置(Convention over configuration)
  • 必须强调,Maven远远不止是包管理工具
  • Maven的包按照约定为所有的包编号,方便检索,groupId/artifactId/version
  • 依赖冲突的解决原则:最近的胜出
  • 当你看到如下异常的时候:
    1.AbstractMethodError
    2.NoClassDefFoundError
    3.ClassNotFoundException
    4.LinkageError
  • 一般就是包冲突了,解决方法:
    1.单独声明需要引用的特定包
    2.排除掉冲突的包

你可能感兴趣的:(Maven、Java的包管理的理解)