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

问题描述

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

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

/p 代表“前置”。

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

解决方法

我认真研究了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
    #
    #如果您想提交错误报告,请访问:

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”