【问题标题】:How does one build the java JRE from source (src.zip in JDK)?如何从源代码(JDK 中的 src.zip)构建 java JRE?
【发布时间】:2011-06-24 08:25:30
【问题描述】:

令人惊讶的是,我找不到这个问题的答案。

我正在尝试从源代码重建 java JRE。我通过提取JDK中的src.zip文件获得了java JRE源代码。

在对 JRE 进行任何更改后,如何将新源代码编译回 .java 文件(之后我可以将其压缩到 rt.jar 文件中)。

谢谢。

【问题讨论】:

  • after making any changes I need是什么意思
  • @Woot4Moo,我的意思是在编辑 JRE 的源代码后,我希望将它再次构建到我的自定义 JRE 版本。例如,我可以编辑 Object.java 以便每个对象都有另一个字段或某些特殊功能。我意识到有更好的方法可以做到这一点,但我只是举个例子。
  • 您是否遇到任何异常或错误?你能提到你的方法吗?这将有助于其他人了解问题所在。
  • @Favonius 我还没有真正尝试过任何东西。我正在寻找一个告诉我如何做到这一点的来源。请注意,我说的是 JRE 的高级 .java 文件。我想它们可以用 javac 构建,但是需要手动将所有这些文件添加到文件列表中?这些文件位于 JDK 的 src.zip 中。这不是 JDK 本身的低级 C 源代码。
  • 我认为,如果您想更改属于认可标准 API 一部分的类,则只能使用此方法执行此操作:download.oracle.com/javase/6/docs/technotes/guides/standards

标签: java build-process


【解决方案1】:

您有更好的机会使用 OpenJDK(Oracle/Sun 未来 JDK 的基础)。 http://openjdk.java.net/

但你实际上想要改变什么?也许有更好的方法...

【讨论】:

  • 恐怕OpenJDK不够用(它不支持所有Java应用程序)。此外,这应该是一项微不足道的任务,因为源就在那里,只需构建即可。
  • src.zip 不包含所有来源,我不知道许可证允许什么。 OpenJDK 需要一些额外的非开源二进制文件,但所有应用程序都应该可以正常运行。
【解决方案2】:

组成的一些 Java 源代码 rt.jar 在构建期间生成 过程,来自脚本和其他方式。 一些属性文件也是 以这种方式生成,并且一些 属性文件被转换成Java 也有助于 rt.jar。所以没有做一个完整的 首先构建并填充 'gensrc' 目录,你不会拥有所有 构成 rt.jar 的源代码。

取自: http://www.java.net/forum/topic/jdk/java-se-snapshots-project-feedback/it-possible-just-build-rtjar

因此,当您对 src.zip 中的所有 java 文件说 javac 时,它不会编译,因为依赖关系图已损坏(缺少生成的文件)

也看看这个:Where to get full source code for rt.jar?

【讨论】:

  • 谢谢。他们对完整的构建意味着什么?构建JDK的C源代码?
  • @Tom:从链接看来,完整的构建涉及执行脚本以生成样板代码和属性文件。虽然我不太确定它还可能涉及什么。当我得到值得分享的东西时,我会不断更新我的答案。
【解决方案3】:

如果你想改变一些类,你只需要编译那些类。除非您打算替换它,否则您不需要编译整个 JDK。

如果您只想修补它,请创建一个包含已更改类的 JAR 并将其添加到引导类路径中。

【讨论】:

  • 我想我可以一个一个地编译我修改的每个类。令我惊讶的是,有一个显然无法轻松构建的源文件夹(?)。
  • 它用于教育目的。 JDK 许可证不鼓励对任何标准库/类进行修改(律师可能会采取更强烈的观点)但是您可以从头开始编译 OpenJDK。
【解决方案4】:

重新审视问题后。任何这些文件上的 Javac 都允许您重建它们。此外,您不会将 .java 文件编译成 .java 文件,它们会变成 .class 文件。您可以编写一个 ANT 构建脚本来为您处理繁重的工作。

【讨论】:

  • @Woot4Moo,恐怕这是为了构建低级 C 源代码。我只是在谈论 rt.jar JRE 文件的 java 文件(它在 JDK 文件夹中的 src.zip 中,而不是 JDK 的源代码)。
  • 我觉得这也是基于OpenJDK的吧?
  • @Woot4Moo:你之前提到的链接:download.java.net/jdk6/6u23/promoted/b05/docs/build/…
  • @Puce 对,我想我从来没有尝试过从源代码构建它。
  • 不幸的是,似乎无法使用 javac 轻松构建源代码,似乎缺少文件或其他东西。不幸的是,我无法真正指出问题所在。
猜你喜欢
  • 2012-03-30
  • 2010-09-14
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2021-10-07
  • 2012-01-21
  • 2012-06-13
相关资源
最近更新 更多