1

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

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

我在 mercurial 中找到了 repo: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 不在此包中。

4

1 回答 1

1

您的 Java 9 构建未生成“rt.jar”文件的原因是 Java 9 不再具有“rt.jar”或“tools.jar”。正如JEP 220所述:

“以前存储在 lib/rt.jar、lib/tools.jar、lib/dt.jar 和各种其他内部 jar 文件中的类和资源文件现在将以更有效的格式存储在 lib 中的特定于实现的文件中目录。这些文件的格式不会被指定,如有更改,恕不另行通知。

所以......基本上......你的 Java 9 版本正在运行。

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

  • 使用具有“rt.jar”的 Java 8 ...
  • 在您的 Java 9 源代码树中进行更改并以正常方式构建。
  • 弄清楚如何通过修改 Java 9 构建过程来注入您的更改。
  • 了解“特定于实现的文件”是如何工作的,并使用构建过程使用的工具注入您的更改。
于 2018-03-06T11:49:40.747 回答