首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当一个项目使用JDK进行配置时,JDK中的哪个.jar文件会被加载?

当一个项目使用JDK进行配置时,JDK中的rt.jar文件会被加载。

rt.jar是JDK中的一个核心库文件,包含了Java标准库中的类和方法。它是Java Runtime Environment(JRE)的一部分,提供了Java程序运行所需的基本功能和类库。

rt.jar文件的加载是由Java虚拟机(JVM)负责的。在项目启动时,JVM会根据配置文件中指定的JDK路径,找到并加载rt.jar文件。加载后,项目就可以使用Java标准库中的类和方法。

rt.jar文件的加载对于Java项目的正常运行非常重要。它包含了许多常用的类,如java.lang包中的String、Object等,以及java.util包中的集合类、日期类等。这些类是Java开发中经常使用的基础类,通过加载rt.jar文件,项目可以直接使用这些类,无需额外导入。

在腾讯云的云计算服务中,推荐使用云服务器(CVM)来部署Java项目。腾讯云的云服务器提供了高性能的计算资源和稳定可靠的网络环境,适合承载Java应用程序。您可以通过腾讯云控制台或API创建和管理云服务器实例,并选择适合您项目需求的配置。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解JVM(③)Java模块化

模块化系统 可配置封装隔离机制解决了原来类路径上跨文件public类可访问性问题。public类型不再意味着所有地方代码都可以访问它们,未导出和未开放类是不能够被外部使用。...只要放在类路径上JAR文件,都会被当作传统JAR包来对待;相应地,只要放在模块路径上JAR文件,即使没有使用JMOD后缀,甚至不包含module-info.class文件,也仍然会被当作一个模块来对待...JAR文件在类路径访问规则:所有类路径下JAR文件及其他资源文件,都被视为自动打包在一个匿名模块(Unnamed Module)里,这个匿名模块几乎是没有任何隔离,它可以看到和使用类路径上所有的包...JAR文件在模块路径访问规则:如果把一个传统、不包含模块定义JAR文件放置到模块路径,它就会变成一个自动模块(Automatic Module)。...平台及应用程序类加载器收到类加载请求,在委派给父加载加载前,要先判断该类是否能够归属到某一个系统模块,如果可以找到这样归属关系,就要优先委派给负责哪个模块加载器完成加载,这可以算是对双亲委派第四次破坏

1.1K30

JDK Dubbo Springboot SPI 技术详解

SPI 本质是将接口实现类全限定名配置文件,并由服务加载器读取配置文件加载实现类。这样可以在运行时,动态为接口替换实现类。...要是找到多个实现的话,用哪个实现作为最后实例呢? 所以这里使用iterator来获取所有的实现类配置。...不过,Dubbo 并未使用 Java 原生 SPI 机制,而是对其进行了增强,使其能够更好满足需求。在 Dubbo ,SPI 是一个非常重要模块。...但由于 Spring SPI 主要用在 Spring Boot ,而 Spring Boot ClassLoader 会优先加载项目文件,而不是依赖包文件。...所以如果在你项目中定义个spring.factories文件,那么你项目文件会被一个加载,得到Factories项目中spring.factories里配置那个实现类也会排在第一个 如果我们要扩展某个接口的话

41820
  • Maven教程,一篇带你走入“内行”!

    默认使用是 Ant ,项目根目录下 .project 文件即为 Ant 配置文件 三,Maven Maven简介 基于 Ant 构建工具,Ant 有的功能 Maven 都有,额外添加了其他功...能 本地仓库:计算机中一个文件夹,自己定义是哪个文件夹 中央仓库:网上地址 https://repo1.maven.org/maven2/ (下载速度慢 -> 配置国内镜像) 保证 JDK 版本和开发环境一致...代码 src/main/resources :真实目录( src/main/resources)快捷目录 1.存放配置文件 2.虽然看见 resources 但是里面所有配置文件最终会被编译放入到...(不需要创 建 lib 因为Maven 项目的依赖包统一由 pom.xml 进行管理) 在 pom.xml 添加 javaee 相关三个 jar (基础 web 包) jar有效范围...解析不到,所以需要两个(存在配置文件目录)全部配置 如果希望 src/main/java 下文件也被编辑到 classes ,在 pom.xml 配置(下面内容配置 ) <resources

    1.1K20

    Hello——Java10新特性,请了解一下

    >(); ✔ 应用类数据共享(CDS)    CDS 在 JDK5 被引进以改善 JVM 启动表现,同时减少多个虚拟机在同一个物理或虚拟机器上运行时资源占用。  ...为了减少在使用默认收集器应用性能配置文件差异,G1 现在有一个并行完整收集机制。...编译 JNI 代码,已不再需要单独工具来生成头文件,因为这可以通过 javac 完成。在未来某一刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。...如果 JarEntry 不代表一个多版本 jar 文件版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName()返回相同名称...三、其他 ▪  如果 Kerberos 配置文件 krb5.conf 包含一个 INCLUDEDIR 选项,那么在 INCLUDEDIR 这个目录下所有以 .conf 结尾文件会被默认加载进来。

    55150

    Hello——Java10新特性,请了解一下

    >(); ✔ 应用类数据共享(CDS)    CDS 在 JDK5 被引进以改善 JVM 启动表现,同时减少多个虚拟机在同一个物理或虚拟机器上运行时资源占用。  ...为了减少在使用默认收集器应用性能配置文件差异,G1 现在有一个并行完整收集机制。...编译 JNI 代码,已不再需要单独工具来生成头文件,因为这可以通过 javac 完成。在未来某一刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。...如果 JarEntry 不代表一个多版本 jar 文件版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName()返回相同名称...三、其他 ▪  如果 Kerberos 配置文件 krb5.conf 包含一个 INCLUDEDIR 选项,那么在 INCLUDEDIR 这个目录下所有以 .conf 结尾文件会被默认加载进来。

    82650

    深入JVM类加载器机制,值得你收藏

    比如我在ide配置,我需要配置cldrdata.jar在核心class搜索路径后面,所以配置代码如下 -Xbootclasspath/a:D:/sdk/jdk8/jre/lib/ext/cldrdata.jar...双亲委托,加载加载一个class文件,总是先询问自己父类加载器是否能够加载这个class文件,如果自己父类加载器可以加载,那么就交给父类加载器,如果父类不可以,则自己加载。...缓存机制,缓存机制保证所有被加载class文件会被缓存,程序需要使用某个class文件先从缓存获取,缓存没有时才会加载,这样会保证一个class文件会被加载一次。...rt.jar,无论哪个加载器要加载这个类,最终都会委派给启动类加载进行加载,因此Integer类在程序各种类加载器环境中都是同一个类。...,比如Java.lang.String,不能对一个.class文件或者一个不在程序引用里.jar进行创建。

    60420

    JDKDubboSpring 三种 SPI 机制,谁更好?

    SPI 本质是将接口实现类全限定名配置文件,并由服务加载器读取配置文件加载实现类。 这样可以在运行时,动态为接口替换实现类。...要是找到多个实现的话,用哪个实现作为最后实例呢? 所以这里使用iterator来获取所有的实现类配置。...不过,Dubbo 并未使用 Java 原生 SPI 机制,而是对其进行了增强,使其能够更好满足需求。在 Dubbo ,SPI 是一个非常重要模块。...但由于 Spring SPI 主要用在 Spring Boot ,而 Spring Boot ClassLoader 会优先加载项目文件,而不是依赖包文件。...所以如果在你项目中定义个spring.factories文件,那么你项目文件会被一个加载,得到Factories项目中spring.factories里配置那个实现类也会排在第一个 如果我们要扩展某个接口的话

    48340

    JDK、Dubbo、Spring 三种 SPI 机制,谁更好?

    SPI 本质是将接口实现类全限定名配置文件,并由服务加载器读取配置文件加载实现类。这样可以在运行时,动态为接口替换实现类。...要是找到多个实现的话,用哪个实现作为最后实例呢? 所以这里使用iterator来获取所有的实现类配置。...但由于 Spring SPI 主要用在 Spring Boot ,而 Spring Boot ClassLoader 会优先加载项目文件,而不是依赖包文件。...所以如果在你项目中定义个spring.factories文件,那么你项目文件会被一个加载,得到Factories项目中spring.factories里配置那个实现类也会排在第一个 如果我们要扩展某个接口的话...Dubbo 使用,不能完全算是一个独立模块; Spring 功能和JDK相差无几,最大区别是所有扩展点写在一个 spring.factories 文件,也算是一个改进,并且 IDEA 完美支持语法提示

    68330

    Idea操作Maven超级详细使用 基础篇:

    而且过程并不需要担心 到仓库中找到 jar 包这样会影响程序性能: maven 也有索引概念,通过建立索引,可以大大提高加载 jar速度, 使得我们认为 jar 包基本跟放在本地工程文件再读取出来速度是一样...Maven仓库分为三类: 本地仓库: 存放在本地服务器运行项目的时候,maven会自动根据配置文件查找本地仓库,再从本地仓库调用jar使用。...远程仓库(私服): 本地仓库没有项目所需要jar,那么maven会继续查找远程仓库,一般远程仓库指的是公司搭建私有服务器,也叫私服; jar包在私服查找到之后,maven会将jar包下载到本地仓库...中央仓库: 远程仓库获取不到jar,就需要到中央仓库去查找,并下载在远程仓库,本地仓库再从远程仓库中下载回来使用。 此由maven团队维护,据说截止至16年,已经有2亿个包在仓库!...-- 设值jdk编码,该方法是指定项目JDK版本 或 在Maven settings.xml配置统一环境JDK --> 1.8</maven.compiler.source

    26310

    JDKDubboSpring 三种 SPI 机制,谁更好?

    SPI 本质是将接口实现类全限定名配置文件,并由服务加载器读取配置文件加载实现类。 这样可以在运行时,动态为接口替换实现类。...要是找到多个实现的话,用哪个实现作为最后实例呢? 所以这里使用iterator来获取所有的实现类配置。...SPI 是通过键值对方式进行配置,这样我们可以按需加载指定实现类。...但由于 Spring SPI 主要用在 Spring Boot ,而 Spring Boot ClassLoader 会优先加载项目文件,而不是依赖包文件。...所以如果在你项目中定义个spring.factories文件,那么你项目文件会被一个加载,得到Factories项目中spring.factories里配置那个实现类也会排在第一个

    28120

    一文搞懂JavaSPI机制

    () 读到实现类,并将实例化后对象存放到 providers 集合缓存 使用 如某接口有3个实现类,那系统运行时,该接口到底选择哪个实现类呢?...如下系统运行时,加载配置,用实现A2实例化一个对象来提供服务: 再如,你要通过jar包给某个接口提供实现,就在自己jarMETA-INF/services/目录下放一个接口同名文件,指定接口实现是自己这个...jar包里某类即可: 别人用这个接口,然后用你jar包,就会在运行时通过你jar包指定文件找到这个接口该用哪个实现类。...JDK 已经规定好配置路径,你若随便定义,类加载器可就不知道去哪里加载了 假设你有个工程P,有个接口A,A在P无实现类,系统运行时怎么给A选实现类呢?...A实现是你jar包里哪个类即可 适用场景 插件扩展 比如你开发了一个开源框架,若你想让别人自己写个插件,安排到你开源框架里,扩展功能

    99110

    超级详细 Maven 教程(基础+高级)

    借助于maven,可以将jar包保存在本地meven“仓库”,不管在哪个项目只要使用引用即可就行。... A jar 包用到了 B jar某些类,A 就对 B 产生了依赖,那么我们就可以说 A 依赖 B。...由于运行时不需要,所以 test 范围依赖不会被打包。 system:system 范围依赖与 provide 类似,但是必须显示提供一个对于本地系统 jar 文件路径。一般不推荐使用。...所以最好办法就是把适用于各种不同环境配置信息分别准备好,部署哪个环境就激活哪个配置。 在 Maven 使用 profile 机制来管理不同环境下配置信息。...这个元素能够用HTML格式描述 (例如,CDATA文本会被解析器忽略,就可以包含HTML标 签), 不鼓励使用纯文本描述。

    2.7K40

    一文理解JavaSPI机制

    SPI具体约定 Java SPI具体约定:服务提供者,提供了服务接口某种实现之后,在jarMETA-INF/services/目录里同时创建一个以服务接口命名文件。...该文件里就是实现该服务接口具体实现类。而外部程序装配这个模块时候,就能通过该jar包META-INF/services/里配置文件找到具体实现类名,并装载实例化,完成模块注入。...增加配置文件项目的\src\main\resources\下创建\META-INF\services目录,并增加一个配置文件,这个文件必须以接口全限定类名保持一致,例如:com.xiaohui.spi.HelloService...然后在配置文件写入具体实现类全限定类名,如有多个则换行写入。 ? 使用JDK来载入 使用JDK提供ServiceLoader.load()来加载配置文件描述信息,完成类加载操作。 ?...Spring统统使用线程上下文加载器(ContextClassLoade)来加载类,无需理会被放在哪里。

    82110

    Spring Boot 项目转容器化 K8S 部署实用经验分享

    1、服务配置文件处理方式 对于各个项目分环境部署,最麻烦就是配置文件问题,不同环境需要加载不同配置,好在 Spring Boot 框架加载配置是非常方便,具体如何加载配置文件可以参考 这里,我们可以针对不同环境分别配置不同配置文件...,这里有两个地方要注意一下: 构建镜像时候,尽量实现一个镜像支持所有环境(即所有配置都打到一个镜像里面去),在容器启动指定加载哪个环境配置即可,例如:在部署 Deployment 指定 args:...尽量不要每个环境打出来一个镜像版本,传统方式在构建时候指定 -D prod 配置 Profile 来指定加载哪个配置,来生成不同产物 jar,容器化部署后不需要这样,那样后期控制各镜像版本发布会比较麻烦...,我们就注入 $JAVA_OPTS 环境变量,来优化 JVM 参数,还可以传递一个变量,这个变量大家应该就猜到了,就是服务启动加载哪个配置文件参数,例如:--spring.profiles.active...ConfigMap 使用方式有很多种,这里建议大家可以将一些经常更改配置放到 ConfigMap ,例如我在实际操作,就发现有的项目 nginx.conf 配置,还有配置 ENV 环境变量信息经常变动

    3.9K31

    JVM —— 类加载分类,双亲委派机制

    不推荐,尽可能不要去更改JDK安装目录内容,因为即使放进去由于文件名不匹配问题也不会正常地被加载(在加载jar时候,会对名称进行校验,名称必须符合JVM内部一些规范)。使用参数进行扩展。...,在第二个项目的IDEA配置添加虚拟机参数,就可以加载D:/jvm/jar/classloader-test.jar这个jar包了希望启动类加载帮我们加载A类,在另一个项目中获取A类并初始化:使用Class.forName...获取Jar类,可以正常执行初始化,说明自己拓展Jar包被加载了应用场景:在企业开发一些偏底层基础类,所有用到jdk项目都需要使用这些基础类,此时就通过启动类加载器去加载用户jar包1.2.2...一个加载器接收到加载任务,会自底向上查找是否加载过,在自顶向下进行加载。...具体来说,SPI实现框架代码位于一个类库,而由应用程序自定义SPI实现类位于应用程序类路径下,由于双亲委托模型限制,无法直接由应用程序加载SPI实现类。

    4510

    JDK 10 109 项新特性

    [310]应用类数据共享(CDS) :CDS 在 JDK5 被引进以改善 JVM 启动表现,同时减少多个虚拟机在同一个物理或虚拟机器上运行时资源占用。...在 JDK9 之前,默认收集器是并行,吞吐,收集器。为了减少在使用默认收集器应用性能配置文件差异,G1 现在有一个并行完整收集机制。...编译 JNI 代码,已不再需要单独工具来生成头文件,因为这可以通过 javac 完成。在未来某一刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。...如果这个 JarEntry 是一个多版本 jar 文件入口,它被配置为这样处理,这个方法返回名字是 JarEntry 所代表版本条目的入口,而不是 ZipEntry.getName() 返回基本条目的路径名...如果 JarEntry 不代表一个多版本 jar 文件版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName() 返回相同名称

    71720

    JDK 10 109 项新特性

    [310]应用类数据共享(CDS) :CDS 在 JDK5 被引进以改善 JVM 启动表现,同时减少多个虚拟机在同一个物理或虚拟机器上运行时资源占用。...在 JDK9 之前,默认收集器是并行,吞吐,收集器。为了减少在使用默认收集器应用性能配置文件差异,G1 现在有一个并行完整收集机制。...编译 JNI 代码,已不再需要单独工具来生成头文件,因为这可以通过 javac 完成。在未来某一刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。...如果这个 JarEntry 是一个多版本 jar 文件入口,它被配置为这样处理,这个方法返回名字是 JarEntry 所代表版本条目的入口,而不是 ZipEntry.getName() 返回基本条目的路径名...如果 JarEntry 不代表一个多版本 jar 文件版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName() 返回相同名称

    43720

    回顾Java 8 9 10新特性,展望即将来临11和明年12【大牛经验】

    include目录包含在编译本地代码使用C/C++头文件。 lib目录包含JDK工具几个JAR和其他类型文件。 它有一个tools.jar文件,其中包含javac编译器Java类。...使用绝对名称,Class类方法会删除前导斜线并委派给加载Class对象加载器来查找资源。..."resources/test.config"); 使用相对名称,Class类方法预先添加了包名称,在使用斜线后跟斜线替换包名点,然后再委托加载Class对象加载器来查找资源。...编译 JNI 代码,已不再需要单独工具来生成头文件,因为这可以通过 javac 完成。在未来某一刻,JNI 将会被 Panama 项目的结果取代,但是何时发生还不清楚。...如果 JarEntry 不代表一个多版本 jar 文件版本化条目或者 jar 文件没有被配置为作为一个多版本 jar 文件进行处理,这个方法将返回与 ZipEntry.getName() 返回相同名称

    3.2K30
    领券