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

为什么我找不到rt.jar中com.sun.*类的API文档?

您好!您提到的问题是关于Java中的rt.jar中的com.sun.*类的API文档。

rt.jar是Java运行时库,它包含了Java标准库和一些扩展类。com.sun.*类是Java中的扩展类,它们不是Java标准库的一部分,因此它们的API文档并不会像Java标准库那样被广泛使用和传播。

如果您想要查找com.sun.*类的API文档,可以尝试以下方法:

  1. 在Java官方文档中查找。Java官方文档中有一些关于com.sun.*类的文档,但是这些文档可能并不完整,也可能会有一些错误。
  2. 在开源社区中查找。有些开源社区可能会提供关于com.sun.*类的API文档,但是这些文档的质量和可靠性可能会有很大的差异。
  3. 在Java源代码中查找。Java源代码中包含了com.sun.*类的实现,您可以通过阅读源代码来了解这些类的API。

需要注意的是,com.sun.*类并不是Java标准库的一部分,因此它们的实现和API可能会因为不同的JVM和Java版本而有所不同,因此在使用这些类时需要特别小心,以避免出现不可预测的问题。

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

相关·内容

Javac命令使用ct.sym文件约束可使用的类

API,可能会在未来版本中删除 private JPEGCodec jpegCodec; ^ TestCtSymJdk6NotPass.java:5: 找不到符号 符号...在使用javac命令进行编译代码时,默认使用该文件进行编译时class类的检查和链接,而不是使用rt.jar。 该文件保存了JDK建议使用的类描述信息。com.sun.*包和sun....*包,以及新的jdk.*都不是Open的API,是JDK内部的私有类,这些类的接口可能在之后的版本变动,也不保证平台移植性。 事实上,JDK提供的Public API,仅有三个包:java....它们是官方支持的公共接口(Official、Supported、Public )。 ct.sym文件是一个zip压缩包,它里面包含了部分rt.jar中的类。 ?...ct.sym中的类文件都是简单的空函数,不包含函数体,所以非常小。 ? ct.sym中如果没有该类,则会出现ClassNotFound的错误。

2K41
  • Java 核心类库一览

    为什么叫运行时呢? 因为它包含了所有已编译的类文件,包括引导类以及来自核心 Java API 的所有类,是 Java 运行时环境中所有核心 Java 类的集合。...如果类路径中没有包含 rt.jar,就无法访问 java.lang.String,java.util.ArrayList 和 Java API 中的所有其他类。...这样做的好处就是,不需要做太多的基本安全检查,提升了性能。 有朋友可能会问,我自己定义的类路径和 rt.jar 冲突会发生什么呢?会不会加载我自己定义的类呢?...这时候我可以将我的类编译,并附带一个文档,告诉你我的类怎么使用,有哪些方法,你只要按照文档说明来调用就可以。既节省了你编码实现的时间,也保护了我的版权。...Java API 也有说明文档,比如 Java SE 8:https://docs.oracle.com/javase/8/docs/api/index.html 常用的 API 介绍 Java 核心类库中常用的

    1.1K10

    java包分类包括java.*,sun.*

    .* 也是java标准的一部分,但是没有包含在标准库中,一般属于标准库的扩展。通常属于某个特定领域,不是一般性的api。 ...此上两者都属于java标准库,公有的API,遵循java平台规范, 3. com.sun.* 是sun的hotspot虚拟机中java.* 和javax.*的实现类。...4. org.* 是由企业或者组织提供的java类库,大部分不是sun公司提供的,同com.sun.*,不具备向后兼容性,会根据需要随时增减。...*包: 1、不是API公开接口的一部分,调用sun包的程序并不能确保工作在所有Java平台上,不同的操作系统中的实现可能不相同。 2、不同的jdk版本sun包中的类也可能不定期的变化,因此sun....*包中的类没有提供API文档及源码。 不建议使用

    2.3K20

    带你搞懂双亲委派机制

    这个类加载器主要是去加载你在本机配置的环境变量 Java_Home/jre/lib 目录下的核心API,如rt.jar ? 2)扩展类加载器(Extension ClassLoader)。...为什么提示在java.lang.String类中找不到main方法呢,我这明明不是定义了吗?其实,问题的关键就在于类加载遵循双亲委派机制。 类加载器有以下这样的层次关系: ?...当一个类在加载的时候,都会先委派它的父加载器去加载,这样一层层的向上委派,直到最顶层的启动类加载器。如果顶层无法加载(即找不到对应的类),就会一层层的向下查找,直到找到为止。这就是类的双亲委派机制。...由于,rt.jar包下的String类中确实没有main方法,所以才会有以上的报错信息。 我们可以试想一下,如果没有双亲委派机制的存在,那我这段代码是不是就可以执行成功了。...如果这样的话,岂不是说明我可以随意覆盖rt.jar包中的类(如String,Integer类等)。这样的话将会使程序陷入混乱,Java核心包中的类的安全也无法保证。

    1K20

    面试官问:可以自定义String类吗?麻了~

    故事:昨天一位朋友在面试中被问到:如果我自定义个String类行不行? 你是否知道可不可以?如果回答说不可以,那面试官可能会问为什么不可以?...错误: 在类 java.lang.String 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX...应用程序类必须扩展javafx.application.Application 错误信息里面提到在类 java.lang.String 中找不到 main 方法,这不是有毛病吧,我这String类里明细有...自定义类加载器可以根据开发人员的实际需求加载不同来源的类文件,例如从网络、数据库等载入类。 那上面为什么会报错找不到main方法呢? 这里就得聊聊委派机制,在JVM中有个双亲委派模型。.../lib 目录下的核心Java类,刚好在这个lib目录下有个rt.jar,同时,在这个jar包里也有个java.lang.String,所以,就优先加载了rt.jar包中String类了,这个类里确实也没有

    16710

    1.2 双亲委派机制及其原理

    上面这个图就是双亲委派机制的图. 什么意思呢? 比如: 我现在有一个自定义的java.lxl.jvm.Math类....这时候, 我们都知道, Math类是我自己定义的, 引导类加载器中不可能有, 所以, 他就会让扩展类加载器去加载, 扩展类加载器中有没有呢?...1.3 为什么要有双亲委派机制? 两个原因: 1. 沙箱安全机制, 自己写的java.lang.String.class类不会被加载, 这样便可以防止核心API库被随意修改 2. 避免类重复加载....我们来看下面的案例 加入, 我在本地定义了一个String类, 包名是java.lang.String. 也就是是rt.jar包下的String类的包名是一样的哈. ?...但是这个java.lang.String是rt.jar中的类, 不是我们自定义的类, 加载了rt.jar中的java.lang.String类以后, 去找main 方法, 没找到.....结果就跑出了找不到

    44610

    读《深入理解Java虚拟机》解决实际问题及总结JDK和JVM整体架构

    其实,我倒不这么认为,至少在我看完一遍这本书后,有一种醍醐灌顶的感觉,很多模糊的知识和概念也变得清晰起来。...既然原因是出在FtpUtil类的初始化上,那么从FtpUtil这个类着手分析,异常信息显示找不到ServletOutputStream类的定义,而在引入的包"javax.servlet.http.HttpServletResponse...基于以上分析,我将一个servlet-api.jar包拷贝到JRE/lib/ext路径下,这样,扩展类加载器能够加载拷贝jar包中的ServletOutputStream类,应用程序加载器就不会再去加载...从上图也可以看出,为什么我们不能够自己定义一些与JDK类名、路径完全一样的类来覆盖JDK的类(如String),因为这些类在rt.jar中,由启动类加载器加载,我们自己定义的同名同路径类根本没有加载的机会...(仅按照文件名识别,如rt.jar,名字不符合的类库即使放到lib目录中也不会被加载)类库加载到虚拟机内存中。

    64700

    JVM双亲委派机制

    ("我是自定义的String类的静态代码块"); } } 在一个测试类中加载String类,看看加载的String类是JDK自带的,还是我们自己编写的 public class StringTest...System.out.println("我是自定义的String类的静态代码块"); } //错误: 在类 java.lang.String 中找不到 main 方法...*下的类由BootStrap ClassLoader加载,BootStrap ClassLoader发现核心Api包中没有自定义的类,则加载失败。...java.lang开头的类) 4.沙箱安全机制 自定义String类时:在加载自定义String类的时候会率先使用引导类加载器加载,而引导类加载器在加载的过程中会先加载jdk自带的文件(rt.jar包中...java.lang.String.class),报错信息说没有main方法,就是因为加载的是rt.jar包中的String类。

    34530

    深入浅出Java的类加载机制使用自己的类别载入器

    lib目录下.jar档案中(例如rt.jar)中的类载入。...可以使用System.getProperty("sun.boot.class.path")来获取sun.boot.class.path中指定的路径,例如在我的笔记本中显示的是以下的路径: C:\Program...image.png 我们可以很熟悉这个结构了,可以确认Bootstrap Loader类加载器加载的基本是java api的内容,基础类库都在这里。...可以使用System.getProperty("java.ext.dirs")來显示java.ext.dirs中指定的路径,例如在我的笔记本中显示的是以下的路径: C:\Program Files\Java...由于Bootstrap Loader在它的路径设定(sun.boot.class.path)下找不到类,所以由ExtClassLoader来寻找,而 ExtClassLoader在它的的路径中(java.ext.dirs

    74820

    深入分析Java ClassLoader原理

    二、Java默认提供的三个ClassLoader BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,如:rt.jar、resources.jar...考虑到安全因素,我们试想一下,如果不使用这种委托模式,那我们就可以随时使用自定义的String来动态替代java核心api中定义的类型,这样会存在非常大的安全隐患,而双亲委托的方式,就可以避免这种情况,...四、定义自已的ClassLoader 既然JVM已经提供了默认的类加载器,为什么还要定义自已的类加载器呢?...因为Java中提供的默认ClassLoader,只加载指定目录下的jar和class,如果我们想加载其它位置的类或jar时,比如:我要加载网络上的一个class文件,通过动态加载到内存之后,要调用这个类中的方法实现我的业务逻辑...如没有特殊的要求,一般不建议重写loadClass搜索类的算法。下图是API中ClassLoader的loadClass方法: ?

    72020

    2.双亲委派机制详细解析及原理

    写在前面的话:为什么要研究类加载的过程?为什么要研究双亲委派机制? 研究类加载的过程就是要知道类加载的时候使用了双亲委派机制。...这时候, 我们都知道, Math类是我自己定义的, 引导类加载器中不可能有, 加载失败,所以, 他就会去加载这个类。...我们想一想, 在ExtClassLoader类路径里面能找到这个类么?显然是找不到的, 因为这个类使我们自己定义的. 他们他一定执行return null....我们来看下面的案例 加入, 我在本地定义了一个String类, 包名是java.lang.String. 也就是是rt.jar包下的String类的包名是一样的哈....但是这个java.lang.String是rt.jar中的类, 不是我们自定义的类, 加载了rt.jar中的java.lang.String类以后, 去找main 方法, 没找到.....结果就抛出了找不到

    70041

    Java中classLoader浅析.

    javafx.application.Application 为什么呢,明明我在Long方法类中定义了main方法,为什么说main方法没有定义呢?...你可以认为每一个Class对象拥有磁盘上的那个.class字节码内容,每一个class对象都有一个getClassLoader()方法,得到是谁把我从.class文件加载到内存中变成Class对象的。...),如rt.jar(runtime)、i18n.jar等,这些是Java的核心类。...所以这个时候根类加载器就去加载这个类,可在%JAVA_HOME%\jre\lib下,它找不到com.wangmeng.Test这个类,所以他告诉他的子类加载器,我找不到,你去加载吧,子类扩展类加载器去%...JAVA_HOME%\lib\ext去找,也找不着,它告诉它的子类加载器 AppClassLoader,我找不到这个类,你去加载吧,结果AppClassLoader找到了,就加到内存中,并生成Class

    1.4K100

    面试官:什么是双亲委派模型?

    1.1 启动类加载器 启动类加载器(Bootstrap ClassLoader)是由 C++ 实现的,它是用来加载 \jre\lib\rt.jar 和 resources.jar...+ String.class.getClassLoader()); } } 复制代码 以上程序的执行结果如下图所示: 问题来了,为什么打印的不是“Bootstrap ClassLoader...: 2.双亲委派模型 双亲委派模型的执行流程是这样的: 1、当加载一个类时,会先从应用程序类加载器的缓存里查找相应的类,如果能找到就返回对象,如果找不到就执行下面流程; 2、在扩展加载器缓存中查找相应的类...,如果能找到就返回对象,如果找不到就继续下面流程; 3、在启动类加载器中查询相应的类,如果找到就返回对象,如果找不到就继续下面流程; 4、在扩展加载器中查找并加载类,如果能找到就返回对象,并将对象加入到缓存中...,如果找不到就继续下面流程; 5、在应用程序类加载器中查找并加载类,如果能找到就返回对象,并将对象加入到缓存中,如果找不到就返回 ClassNotFound 异常。

    36510

    1.类加载器

    1.1 启动类加载器 启动类加载器(Bootstrap ClassLoader)是由 C++ 实现的,它是用来加载 \jre\lib\rt.jar 和 resources.jar...+ String.class.getClassLoader()); } } 以上程序的执行结果如下图所示: 问题来了,为什么打印的不是“Bootstrap ClassLoader”而是...: 2.双亲委派模型 双亲委派模型的执行流程是这样的: 1、当加载一个类时,会先从应用程序类加载器的缓存里查找相应的类,如果能找到就返回对象,如果找不到就执行下面流程; 2、在扩展加载器缓存中查找相应的类...,如果能找到就返回对象,如果找不到就继续下面流程; 3、在启动类加载器中查询相应的类,如果找到就返回对象,如果找不到就继续下面流程; 4、在扩展加载器中查找并加载类,如果能找到就返回对象,并将对象加入到缓存中...,如果找不到就继续下面流程; 5、在应用程序类加载器中查找并加载类,如果能找到就返回对象,并将对象加入到缓存中,如果找不到就返回 ClassNotFound 异常。

    36630

    java教程系列二:Java JDK,JRE和JVM分别是什么?

    它扫描JRE lib文件夹中的rt.jar。 如果找不到类,那么extension加载器将在jre \ lib \ ext包中搜索类文件。...如果还找不到类,则应用程序类加载器将在系统的 CLASSPATH环境变量中搜索所有Jar文件和类 任何类加载程序找到了类,则由该类加载器加载类;否则抛出ClassNotFoundException。...Java HotSpot服务器虚拟机使用的DLL文件。 Java运行时环境使用的代码库,属性设置和资源文件。例如rt.jar和charsets.jar。...javadoc –文档生成器,可从源代码注释自动生成文档 jar –存档程序,它将相关的类库打包到一个JAR文件中。...policytool –策略创建和管理工具 xjc – XML绑定Java API(JAXB)API的一部分。

    77410

    一次对JDK进行减肥的记录

    毕竟并非JDK中所有的Java类都需要用到,可以将那些不需要的Java类文件以及一些文档性的东西删除掉.于是在google了一下,已经有人这么干过了,参考: https://blog.csdn.net/...xuweilinjijis/article/details/77527117 jdk1.8运行环境精简瘦身 我的实践 我根据搜索到的资料,结合自身的实际需求,以满足程序能够正常运行的最低需求,对jdk-...如下是对JDK进行精简实践的具体步骤: 删除运行程序并不需要的文档文件及目录 jdk1.8.0_161/javafx-src.zip jdk1.8.0_161/src.zip jdk1.8.0_161...jdk1.8.0_161/jre/lib/oblique-fonts jdk1.8.0_161/jre/lib/deploy.jar jdk1.8.0_161/jre/lib/locale/ 删除jar包中不需要的...精简的实现并不涉及任何技术难点,也并非必要.在我自己的实际场景中是因为触及到需要大量拷贝JDK文件导致消耗时间太长这个痛点了,所以才考虑这么做.另外,虽然我需要对程序进行批量部署,但是由于程序很简单,并未使用比较复杂的自动化部署工具

    1.6K20

    JVM:第一章:类加载机制深度解析

    ("加载B类中的构造方法"); } } 执行结果: 加载TestDynamicLoad类中的静态代码块 加载A类中的静态代码块 加载A类中的构造方法 执行main方法中的代码 类加载器 ?...引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如rt.jar、charsets.jar等 扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩展目录中的...通俗的说: 当我们需要加载某个类时会先委托父加载器寻找目标类,找不到再委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的类加载路径中查找并载入目标类。...为什么要设计双亲委派机制? 沙箱安全机制:自己写的java.lang.String.class类不会被加载,这样便可以防止核心API库被随意篡改 。...String类"); } } 执行结果: 错误: 在类 java.lang.String 中找不到 main 方法, 请将 main 方法定义为: public static void

    73530

    (三)组件治理之编译期检查

    oracle 关于 Removed rt.jar and tools.jar 的部分,所以,这里只好退而求其次,使用 jdk8 的 rt.jar 参与编译。...这里有一个细节点,在方法 Code 中的字段与方法调用,在 owner 找不到的情况还要继续从他的父类与接口继续查找,因为调用的字段与方法有可能在父类。...unsolved 为 androidx.compose.ui:ui:1.3.0 依赖使用到的 类、字段和方法在整个依赖关系中都找不到 3、生成的组件引用关系图的一部分: image.png 5、一些小插曲...在 Kotlin 中,接口继承接口时,也是可以实现父类的抽象方法,效果看起来跟 Java 的 default 类似,示例如下: Dog 接口实现了父类 IAnimal 接口的抽象 run 方法,代码上来看并没有问题...Decompile 看下具体原因了: Kotlin 接口实现方法居然是通过桥接类做到的,Dog 类的 run 方法仍然是抽象方法,在 Kotlin 的这种情况下,我没办法通过类遍历来检查抽象方法有无实现

    21830

    java动态编译类文件并加载到内存中

    } catch (InterruptedException e) { e.printStackTrace(); } }     第二种:使用jdk自带的rt.jar...中的javax.tools包提供的编译器 /** * 编译java类 * 使用rt.jar中的javax.tools包提供的编译器 * @param name 类的全限定包名...并得到该类的class对象 /** * 动态编译一个java源文件并加载编译生成的class * @param name 类的全限定包名 不带后缀 例如com.test.Notice.../** * 如果父的类加载器中都找不到name指定的类, * 就会调用这个方法去从磁盘上加载一个类 * @param name 类的全限定包名 不带后缀 例如com.test.Notice...* 使用rt.jar中的javax.tools包提供的编译器 * @param name 类的全限定包名 不带后缀 例如com.test.Notice 而不要写成com.test.Notice.java

    3.2K20
    领券