当前位置: 首页 > 面试题库 >

如何使jvm加载我的java.lang.String而不是rt.jar中的那个

易京
2023-03-14
问题内容

我认真研究了Java类加载器。现在,我想编写一个与rt.jar中的类之一具有相同的包名称和类名称的类。例如,我自己编写一个java.lang.String类,以及如何打破父级委托模型以使jvm加载我的java.lang.String而不是rt.jar中的类。

重新编辑
Thx,尝试过。还有↓↓↓

    D:\> java -verbose -Xbootclasspath / p:D:/myrt.jar -jar exe.jar
    [打开D:\ myrt.jar]
    [打开的C:\ java \ jre \ lib \ rt.jar]
    [从C:\ java \ jre \ lib \ rt.jar加载java.lang.Object]
    [从D:\ myrt.jar加载java.lang.String]
    [从C:\ java \ jre \ lib \ rt.jar加载java.io.Serializable]
    [从C:\ java \ jre \ lib \ rt.jar加载java.lang.reflect.GenericDeclaration]
    [从C:\ java \ jre \ lib \ rt.jar加载java.lang.reflect.Type]
    [从C:\ java \ jre \ lib \ rt.jar加载java.lang.reflect.AnnotatedElement]
    [从C:\ java \ jre \ lib \ rt.jar加载java.lang.Class]
    值的java.lang.String布局无效
    #
    #Java运行时环境检测到致命错误:
    #
    #内部错误(javaClasses.cpp:136),pid = 6968,tid = 4116
    #致命错误:预加载类的布局无效
    #
    #JRE版本:(7.0_45-b18)(内部版本)
    #Java VM:Java HotSpot(TM)64位服务器VM(24.45-b08混合模式Windows-amd64
     压缩的哎呀)
    #写入核心转储失败。客户端版本默认情况下不启用小型转储
    Windows离子
    #
    #包含更多信息的错误报告文件另存为:
    #D:\\ hs_err_pid6968.log
    #
    #如果您想提交错误报告,请访问:

问题答案:

您可以使用-Xbootclasspath/pJVM启动时的选项来执行此操作:

-Xbootclasspath/p:/path/to/yourimpl.jar

/p 代表“前置”。

注意:-Xbootclasspath这不是标准的Java选项,因此不同供应商的JVM可能不支持它。



 类似资料:
  • 我正在阅读Horstmann撰写的《Java核心》第10卷中关于断言的第四章,内容是: 有些类不是由类加载器加载的,而是由虚拟机直接加载的。您可以使用这些开关有选择地启用或禁用这些类中的断言。 我对此感到困惑,哪些类将由JVM加载,而不是由类加载器加载,我认为引导类加载器加载了初始类? 谢谢

  • 我正在运行一个内存密集型应用程序。一些关于环境的信息: 64位debian 13 GB RAM 64位JVM(我的程序运行时输出System.getProperty("sun.arch.data.model"),它说"64") 下面是我发出的确切命令: Java-xmx 9000m-jar " ale . jar " test config 我已经用同样精确的数据、配置等运行了程序。在其他几个系统

  • 问题内容: 我需要出于教育目的对功能进行重新编码,并且还必须命名。 当我重命名我的函数时,它可以正常工作,但是当我命名它时,该程序不知道他是否需要使用我的或系统的,即使我没有调用我的免费程序,该程序也是如此(只是另一个func 的声明似乎崩溃) 所以我怎么告诉编译器使用我的而不是系统的呢? 预先谢谢你。 编辑:Linux操作系统 问题答案: 基本上,您可以看到三个选项 在编译时重定向它,例如使用@

  • 我正在学习伟大的火花教程 所以我尝试在46m:00s加载但我所做的是: 我如何加载?

  • 我是Android新手。我创建了一个Android应用程序来计算股票平均价格。 用户输入他们购买的股票和购买时的价格。 我使用下面的公式来实现这个结果。但是,当我没有划分平均价格时,逻辑给了我加法。 1.购买的股份总数=购买的股份(第一)购买的股份(第二)2。总购买金额=股票购买价格(第一)股票购买价格(第二)3。股票平均价格=总购买金额/总购买股份 一切都很好,但问题出在第三步。也许我错过了什么

  • 问题内容: 假设我有以下课程: 将执行此行: 导致JVM加载类,还是将类加载推迟到调用该方法之前? 问题答案: 仅当您需要有关该类的信息时才加载该类。 第(2)和(3)行将导致该类被加载。Something.class对象包含仅来自类定义的信息(第(2)行),因此您需要加载该类。对构造函数(3)的调用显然需要类定义。对于该类上的任何其他方法类似。 但是,第(1)行不会导致类被加载,因为您实际上不需