二方库

1. 一方库(First-party library)

  由软件产品的开发者或维护者自己开发和提供的库,可指本工程中的各模块之间的相互依赖。通常是为了支持和增强自己的软件产品而创建的,因此与软件本身的功能和特性高度相关。  

 

2. 二方库(Second-party library)

  由第二方开发或提供的软件库,可以是一个组织、公司、团队或个人。通常是为了满足自身的需求或为了与他人共享而开发的,一般指公司内部的其他项目发布的jar包(公司内部的依赖库)

 

3. 三方库(Third-party library)

  由独立的第三方开发者或组织开发和维护的软件库,与软件产品的开发者或维护者无直接关联。通常是开源库, 比如apache、google、alibaba等发布的依赖。

 

4. 因引入二方包可能引发的异常

  ClassNotFoundException:一个运行时异常(RuntimeException),它表示虚拟机在运行时无法找到某个类的定义。通常是在通过Class.forName()或者loadClass()方法加载类时,在classpath中也找不到这个类时抛这个异常。通常是由以下几种情况引起的:

      • 类名错误:如果在代码中引用了一个不存在的类名,或者类名拼写错误,虚拟机就无法找到该类的定义。引入正确的jar包。

      • 缺少依赖:如果引用的类依赖其他的类或库,而这些依赖关系无法满足,就会导致ClassNotFoundException异常。这可能是由于缺少所需的依赖库或错误配置了类路径。引入正确的jar包。

      • 类路径问题:当虚拟机在类路径上无法找到所需的类文件时,也会抛出ClassNotFoundException异常。这可能是由于类路径配置错误,或者缺少了包含所需类文件的目录或JAR文件。刷新classpath。

  NoClassDefFoundError :一个运行时的异常,通常是由于编译时存在对某个类的引用,但虚拟机在运行时无法找到该类的定义。通常是由以下几种情况引起的:

    1. 类路径(classpath)问题:如果类路径配置不正确或缺少所需的类文件,虚拟机无法找到类的定义。通常需要检查类路径配置是否正确,并确保所需的类文件在类路径中。类路径可以通过以下几种方式指定:

      • 系统类路径(System Classpath):系统类路径是由java命令的-cp或-classpath选项指定的,它告诉JVM在哪里查找用户自定义的类文件。例如,java -cp /path/to/myclasses MyClass

      • 环境变量CLASSPATH:CLASSPATH环境变量可以设置为包含一个或多个目录或JAR文件的路径,用于指定类路径。例如,export CLASSPATH=/path/to/myclasses:/path/to/otherclasses

      • 默认类路径:JVM还会使用一些默认的类路径,包括JDK的核心类库和扩展类库等。

    1. 缺少依赖:如果引用的类依赖其他的类或库,而这些依赖关系无法满足,就会导致NoClassDefFoundError异常。在这种情况下,需要确保所有必要的依赖项都正确引用。

    2. 类版本不匹配:如果编译时使用了某个版本的类,而在运行时使用的是不同版本的类,就会引发NoClassDefFoundError异常。这通常发生在引入新的类库或更新类库版本后,需要确保编译和运行时使用的类版本一致。

    3. 类加载顺序问题:如果类加载器按照错误的顺序加载类,或者在加载类时出现问题,也可能导致NoClassDefFoundError异常。这可能与类加载器的配置或自定义类加载器相关

  NoSuchMethodError:一个运行时异常,表示在调用方法时找不到匹配的方法。通常是由以下几种情况引起的:

  1. 方法签名不匹配:在代码中调用方法时,虚拟机会根据方法的名称和参数类型来定位方法的定义。如果调用的方法与实际定义的方法签名不匹配,就会引发NoSuchMethodError异常。这可能是因为方法名称或参数类型错误,或者方法签名在代码和实际定义之间发生了变化。

  2. 缺少依赖:如果调用的方法依赖其他的类或库,而这些依赖关系无法满足,就会导致NoSuchMethodError异常。这可能是由于缺少所需的依赖库、版本不匹配或错误配置了类路径。

  3. 类版本不匹配:如果在编译时使用了某个版本的类,在运行时使用的是不同版本的类,就可能导致NoSuchMethodError异常。这通常发生在引入新的类库或更新类库版本后,需要确保编译和运行时使用的类版本一致。

 

5. Snapshot与Release包

  1. Snapshot包:软件开发中的快照版本或快照包,用于测试和预览。它通常包含最新的开发进展和功能,不稳定且不适合生产环境使用。Snapshot包用于提供早期访问新功能、修复错误或改进,并收集反馈和错误报告。通常标有"SNAPSHOT"后缀,例如1.0-SNAPSHOT。

  2. Release包:一个正式的、可靠的、可长期支持的稳定版本,经过充分的测试和验证,可在生产环境中使用。它通常没有特定的后缀,并使用版本号来表示,例如1.0.0。

 

posted @   sTruth  阅读(282)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示