二方库
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 :一个运行时的异常,通常是由于编译时存在对某个类的引用,但虚拟机在运行时无法找到该类的定义。通常是由以下几种情况引起的:
-
类路径(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的核心类库和扩展类库等。
-
-
缺少依赖:如果引用的类依赖其他的类或库,而这些依赖关系无法满足,就会导致NoClassDefFoundError异常。在这种情况下,需要确保所有必要的依赖项都正确引用。
-
类版本不匹配:如果编译时使用了某个版本的类,而在运行时使用的是不同版本的类,就会引发NoClassDefFoundError异常。这通常发生在引入新的类库或更新类库版本后,需要确保编译和运行时使用的类版本一致。
-
类加载顺序问题:如果类加载器按照错误的顺序加载类,或者在加载类时出现问题,也可能导致NoClassDefFoundError异常。这可能与类加载器的配置或自定义类加载器相关
-
NoSuchMethodError:一个运行时异常,表示在调用方法时找不到匹配的方法。通常是由以下几种情况引起的:
-
方法签名不匹配:在代码中调用方法时,虚拟机会根据方法的名称和参数类型来定位方法的定义。如果调用的方法与实际定义的方法签名不匹配,就会引发NoSuchMethodError异常。这可能是因为方法名称或参数类型错误,或者方法签名在代码和实际定义之间发生了变化。
-
缺少依赖:如果调用的方法依赖其他的类或库,而这些依赖关系无法满足,就会导致NoSuchMethodError异常。这可能是由于缺少所需的依赖库、版本不匹配或错误配置了类路径。
-
类版本不匹配:如果在编译时使用了某个版本的类,在运行时使用的是不同版本的类,就可能导致NoSuchMethodError异常。这通常发生在引入新的类库或更新类库版本后,需要确保编译和运行时使用的类版本一致。
5. Snapshot与Release包
-
Snapshot包:软件开发中的快照版本或快照包,用于测试和预览。它通常包含最新的开发进展和功能,不稳定且不适合生产环境使用。Snapshot包用于提供早期访问新功能、修复错误或改进,并收集反馈和错误报告。通常标有"SNAPSHOT"后缀,例如1.0-SNAPSHOT。
-
Release包:一个正式的、可靠的、可长期支持的稳定版本,经过充分的测试和验证,可在生产环境中使用。它通常没有特定的后缀,并使用版本号来表示,例如1.0.0。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)