能够在线浏览OpenJDK源代码吗?

87

是否可以在线浏览OpenJDK的源代码,就像我可以使用SourceForge的项目一样?我以前从未使用过Mercury,所以感到困惑。

(注:我不想下载源代码。我只是想在线浏览,看看一些方法是如何实现的。)

8个回答

100

OpenJDK现在已经在GitHub上了:https://github.com/openjdk/jdk

这是一个庞大的项目,但你可以在jdk / src / java.base / share / classes下找到核心类的实现。

例如,你可以在这里找到java.util.List的实现


如果你需要浏览旧版本,仍需使用旧的Mercurial接口

如果你不熟悉Mercurial接口,可能会感到非常困惑,而且由于这是一个庞大的项目,很难找到你要查找的内容。

这是一个例子:

要找到JDK6中的实现java.util.List,请选择jdk6jdk,选择浏览。然后浏览到src/share/classes/java/util/List.java

你应该到达http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/tip/src/share/classes/java/util/List.java


2
对于任何尝试此操作的人来说,默认分支号码会发生变化。因此,所描述的过程是正确的,只是不要惊讶如果链接无法正常工作。 - Patrick
5
如果您想要JDK7版本,它在这里:http://hg.openjdk.java.net/jdk7/jdk7/jdk/file/tip/src/share/classes/java/nio/file/FileRef.java - user102008
3
如果你用“tip”替换变更集 ID,它将始终有效。它所指向的版本可能会随时间变化,但从某种意义上说,它将始终是最新的。我已经相应地编辑了这篇文章。 - Tom Anderson
4
这个repo名字中的“gate”是什么意思? - finnw
2
现在,如果我想查看实现本地方法的本地代码,我应该在哪里找到它们? - Ustaman Sangat
显示剩余8条评论

9

7
以下是获取Openjdk 8(或任何现有的Java版本)最新版本或任何已发布版本源代码并在Eclipse中使用的基本步骤:

步骤

  • [浏览源代码]
  • 打开JDK的网址,例如http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/
  • 点击tags
  • 选择适当的标签,例如jdk8u73-b02
  • 然后点击browse,
  • 然后浏览到文件夹src/share/classes,
  • [下载源代码]
  • 然后点击其中一个bz2 / zip / gz,以相应的压缩格式下载源代码,(例如对于在zip格式中的jdk8u73-b02,URL将是:http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/archive/2ab13901d6f1.zip/src/share/classes/
  • [在Eclipse中使用]
  • 解压它,
  • 将文件夹“classes/”压缩成zip文件,使“classes/”成为.zip文件的根目录,(例如首先cd jdk-2ab13901d6f1/src/share/,然后zip -r openjdk_8u73_b2_src.zip classes/
  • 将创建的zip文件移动到适当的位置,它将在那里停留一段时间,(例如mv openjdk_8u73_b2_src.zip /media/Eric/software/java/jdk/openjdk/openjdk8u73-b02/source/
  • 在Eclipse中,为已安装JRE的jar文件指定源文件,可以分别为每个已安装JRE的jar文件指定源附件,最常见的jar文件可能是rt.jar
  • 可选地,可能需要刷新项目以使其完全生效,不确定是否必要,
  • 测试它:在Eclipse中,按下ctrl + shift + t,然后输入Cancellable,选择相应已安装JRE的sun.nio.fs.Cancellable, 如果源代码可用,则很好,因为该源代码不可在jdk_home/src.zip中使用,它必须来自附加的openjdk源代码,
  • 切换回源代码:如果不想使用外部openjdk源代码,则可以切换回使用“jdk_home/src.zip”,
  • 好了

7

1
不完全是。我在提问之前就去过那里,但我找不到如何操作 Mercurial 接口的方法。:( - Hosam Aly
抱歉,我实际上去了http://openjdk.java.net/projects/nio并试图从那里找到我的方法。我会再次检查这个链接。谢谢。 - Hosam Aly

6

2

2

1

zgrepcode看起来像是一个标题党。弹出了很多广告和弹窗。 - videoguy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接