java - 自定义 Java 核心类

标签 java class classloader

我对修补核心 Java 类感兴趣。 一般来说,StringGraphics (Swing) 等数据类型以及来自 lib/rt.jar 的类。

所以在我看来,有几种方法可以做到这一点:

  1. 创建自定义类并将它们包含在 JVM 中,然后使用 -Xbootclasspath 运行 jvm
  2. 编写一个新的引导加载程序,它将 Java 代码插入到自定义类中
  3. 在加载时使用代理和仪器字节码(对此不太熟悉)

我想听听您对这些方法的建议/意见,也许我遗漏了一些东西?

最佳答案

使用引导类路径更改此类类可能会违反您的许可协议(protocol)。 (如果您担心的话)更改字节码似乎是允许的。

更改系统类的另一种方法是将 jar 添加到 jre/lib/endorsed 目录(您必须创建该目录),它将优先加载此处的任何内容,而不是其他 jar。

更改 String 类可能会混淆 -XX:UseCompressedStrings 选项。您可能想测试进行任何更改后会发生什么情况。

我在测试中这样做是为了从系统中获得额外的分析。我还没有尝试更改这些类以供生产使用。

我怀疑您尝试做的任何事情都可能以另一种方式完成,但如果没有更多细节,就不可能说。

关于java - 自定义 Java 核心类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901539/

相关文章:

Delphi:泛型和类型约束

java - 扩展其他类中的 JAVA 类

java - Tomcat:Tomcat内部是如何卸载类的?

java - 在 jar 启动时预加载 java 类/库?

java - 更多线程同步同一实例的方法

java - 如何通过 key 获得锁

Java - 接受用户输入来创建未知数量的类对象/数组/数组列表

java - 将 String[] 转换为 int[](或将 ArrayList<String> 转换为 ArrayList<Integer>)的优雅方式

java - 我应该使用哪个 Java 集合来实现线程安全缓存?

java - 什么是类加载器反转