从源代码构建 OpenJDK 库?
Building OpenJDK Library from source?
我想尝试对 java.lang 中的 java 库进行更改,最终可能还会更改其他包。这意味着我希望能够分离出至少 java.lang 并编译成它们,而不是使用 rt.jar
。
如果使用 rt.jar,则无法在 java.lang 中编辑 类 的源代码,因为它们已在 rt.jar.
中找到
我在 mercurial 中找到了 repo:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/share/classes/
但没有关于如何构建的说明。
我刚刚通过安装 jdk9,然后使用 mercurial 构建了 jdk:
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 class 库的部分内容进行实验,我建议采用以下可能的方法:
- 使用 Java 8 ... 有一个 "rt.jar"
- 在您的 Java 9 源代码树中进行更改并以正常方式构建。
- 找出如何通过修改 Java 9 构建过程来注入您的更改。
- 了解我们 "implementation-specific files" 的工作原理并使用构建过程使用的工具注入您的更改。
我想尝试对 java.lang 中的 java 库进行更改,最终可能还会更改其他包。这意味着我希望能够分离出至少 java.lang 并编译成它们,而不是使用 rt.jar
。
如果使用 rt.jar,则无法在 java.lang 中编辑 类 的源代码,因为它们已在 rt.jar.
中找到我在 mercurial 中找到了 repo:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/tip/src/share/classes/
但没有关于如何构建的说明。
我刚刚通过安装 jdk9,然后使用 mercurial 构建了 jdk:
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 class 库的部分内容进行实验,我建议采用以下可能的方法:
- 使用 Java 8 ... 有一个 "rt.jar"
- 在您的 Java 9 源代码树中进行更改并以正常方式构建。
- 找出如何通过修改 Java 9 构建过程来注入您的更改。
- 了解我们 "implementation-specific files" 的工作原理并使用构建过程使用的工具注入您的更改。