java - 从源代码构建 OpenJDK 库?

标签 java build rt.jar

我想尝试对 java.lang 中的 java 库进行更改,最终可能还对其他包进行更改。这意味着我希望能够至少分离出 java.lang 并编译它们,而不是使用 rt.jar 。

如果使用 rt.jar,则无法编辑 java.lang 中类的源代码,因为它们已在 rt.jar 中找到。

我在 Mercurial 中找到了该存储库:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/share/classes/

但没有关于如何构建的说明。

我刚刚通过安装 jdk9 构建了 jdk,然后使用 Mercurial:

hg克隆http://hg.openjdk.java.net/jdk/jdk/

我可以成功构建 java 可执行文件和所有实用程序,但 rt.jar 不在此包中。

最佳答案

您的 Java 9 版本未生成“rt.jar”文件的原因是 Java 9 不再具有“rt.jar”或“tools.jar”。如JEP 220状态:

"The class and resource files previously stored in lib/rt.jar, lib/tools.jar, lib/dt.jar, and various other internal jar files will now be stored in a more efficient format in implementation-specific files in the lib directory. The format of these files will not be specified and is subject to change without notice."

所以...基本上...您的 Java 9 构建正在运行。

如果您想尝试修改部分 Java 类库,我建议采用以下可能的方法:

  • 使用 Java 8 ...它有一个“rt.jar”
  • 在 Java 9 源代码树中进行更改并以正常方式构建。
  • 了解如何通过修改 Java 9 构建过程来注入(inject)更改。
  • 了解“特定于实现的文件”的工作方式,并使用构建过程使用的工具注入(inject)您的更改。

关于java - 从源代码构建 OpenJDK 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49110709/

相关文章:

java - Ant 构建可以在一个系统上运行,而不能在另一个系统上运行

java - 如何将 DocumentListener 分配给 JTextField 数组?

json - json 文件中的 TFS 构建扩展 "VisibleRules"定义

c++ - 使用 CMake 查找 STC 模块 - C++/wxWidgets

java - JDK 14 没有 rt.jar。那么引导类在哪里?

java - Apache FOP 和 xsi :schemaLocation - how to ignore?

java - 可能错误责任的静态分析

java - sun.misc.FloatingDecimal 在哪里?

java - 创建接受多种参数类型的通用函数