首页
学习
活动
专区
工具
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里配置的那个实现类也会排在第一个 如果我们要扩展某个接口的话

44220
  • Java 9 揭秘

    include目录包含在编译本地代码时使用的C/C++头文件。 lib目录包含JDK工具的几个JAR和其他类型的文件。 它有一个tools.jar文件,其中包含javac编译器的Java类。...conf目录包含用户可编辑的配置文件,例如以前位于jre\lib目录中的.properties和.policy文件。 include目录包含要在以前编译本地代码时使用的C/C++头文件。...如果在为这些类加载器定义的命名模块中找不到一个类,那么平台类加载器将委托给它的父类,即引导类加载器。 当引导类加载器需要加载一个类时,它会搜索自己的命名模块列表。...当使用绝对名称时,​​Class​​​类中的方法会删除前导斜线并委派给加载​​Class​​对象的类加载器来查找资源。...("resources/test.config");​​ 当使用相对名称时,​​Class​​类中的方法预先添加了包名称,在使用斜线后跟斜线替换包名中的点,然后再委托加载​​Class​​对象的类加载器来查找资源

    7410

    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 结尾的文件都会被默认加载进来。

    55550

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

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

    83850

    深入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包中的类进行创建。

    63820

    JDKDubboSpring 三种 SPI 机制,谁更好?

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

    49240

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

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

    70030

    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

    44910

    Spring Boot多环境配置,你喜欢哪种?

    指定运行的环境 虽然你创建了各个环境的配置文件,但是Spring Boot 仍然不知道你要运行哪个环境,有以下两种方式指定: 配置文件中指定 在application.properties或者application.yml...如果没有指定运行的环境,Spring Boot 默认会加载application.properties文件,而这个的文件又告诉Spring Boot 去找test环境的配置文件。...或者在项目的根目录下用命令打包,不过需要使用-P指定环境,如下: mvn clean package package -P test maven中的profile的激活条件还可以根据jdk、操作系统、文件存在或者缺失来激活...--通过jdk版本--> 当jdk环境版本为1.8时,此profile被激活--> jdk>1.8jdk> 当jdk环境版本1.8或以上时,此profile被激活--> jdk>[1.8,)jdk> <!

    52020

    JDKDubboSpring 三种 SPI 机制,谁更好?

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

    28820

    嗯,挺全乎儿的,Spring Boot 多环境配置都在这里了,你喜欢哪种?

    指定运行的环境 虽然你创建了各个环境的配置文件,但是Spring Boot 仍然不知道你要运行哪个环境,有以下两种方式指定: 配置文件中指定 在application.properties或者application.yml...如果没有指定运行的环境,Spring Boot 默认会加载application.properties文件,而这个的文件又告诉Spring Boot 去找test环境的配置文件。...或者在项目的根目录下用命令打包,不过需要使用-P指定环境,如下: mvn clean package package -P test maven中的profile的激活条件还可以根据jdk、操作系统、文件存在或者缺失来激活...--通过jdk版本--> 当jdk环境版本为1.8时,此profile被激活--> jdk>1.8jdk> 当jdk环境版本1.8或以上时,此profile被激活--> jdk>[1.8,)jdk> <!

    1.9K10

    一文搞懂Java的SPI机制

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

    1K10

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

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

    3.2K41

    一文理解Java中的SPI机制

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

    87410

    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实现类。

    9310

    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() 返回的相同名称

    45120

    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() 返回的相同名称

    73220

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

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

    4K31
    领券