【问题标题】:Where can I find the Java JDK source code? [closed]在哪里可以找到 Java JDK 源代码? [关闭]
【发布时间】:2011-02-23 05:08:36
【问题描述】:

我想看看 Java API 中的方法是做什么的。所以我想要JDK源代码。

在我重新安装 Linux 之前,我有一个包含所有官方源代码的 src.zip 包。我只需要告诉Eclipse 这个文件在哪里,我就能看到代码。但是现在我没有文件了...

我在哪里可以找到它?

【问题讨论】:

  • 我一直在 JDK 安装目录中找到包含公共 Java API 的 src.zip 文件。这就是你要找的东西吗(我主要使用 Windows,所以 Linux 发行版可能没有它)。
  • 在搜索 JDK 源代码时,这个问题在 google 中排名第三,这很荒谬。 #1 和 #2 是没有源代码链接的 Oracle 链接。我在安装 JDK 时总是会遇到这个问题。请甲骨文。
  • src.zip 是仅用于核心 API 的源包。没有来自 Oracle 的整个 Java SE 的公开可用资源,有些部分是封闭源代码。但是,根据平台的不同,您可以安装和使用 100% 可用源的 OpenJDK 二进制文件。对于源 - 前往 openjdk.java.net 并为您需要的版本克隆源存储库。对于二进制文件 - 一些供应商提供此类二进制文件,包括适用于 linux 的 IcedTea。
  • @Ash,我以前总是在安装目录中找到一个 src.zip。然后,您将其解压缩到 ./src/ 目录,一切都很好。但它现在不存在。事实上,JDK 1.7 readme 表示应该存在 src.zip。而且没有。这太让人抓狂了。
  • 对于 jdk 9,它被移动到 jdk/lib/src.zip 下

标签: java


【解决方案1】:

你还没有说你想要哪个版本,但是JDK 8源代码的存档可以是downloaded here,以及JDK 7JDK 6

此外,您还可以浏览或克隆 Mercurial 存储库:876

【讨论】:

  • 是的;假设我想要 6,然后在那个下载页面上,我要下载什么?大文件jdk-6u21-ea-src-b04-jrl-05_may_2010.jar, 136.48 MB?我已经下载了那个。但不包含源代码。
  • @Martijn:您是否尝试下载大 jar 文件然后阅读其中的自述文件?基本上你只需用java -jar jdk-6u21-ea-src-b04-jrl-05_may_2010.jar 运行它。它将提取源代码。
  • 是的,我做到了。我像你写的那样提取了它。但是里面没有源jar或者zip。
  • 只是想补充一下,当前 (2013) 位置现在是 jdk7.java.net,它重定向到 OTN 以进行任何下载。
【解决方案2】:

此文件包含在standard JDK download 中。此外,您的 Linux 系统可能在存储库中有 JDK。在我的 Ubuntu Linux 中,该文件位于 /usr/lib/jvm/java-6-sun-1.6.0.20/src.zip

【讨论】:

  • 啊哈!请您发布您为 Java VM 和 JDK 安装的软件包。因为我没有那个文件夹。
【解决方案3】:

是的!我明白了!

我从 sun.com 下载了适用于 Linux 的 Java Developer Kit (JDK)。里面有文件 src.zip。但首先我卸载了所有带有 Synaptic 的 Java 包。

【讨论】:

  • 请注意,在 Linux 下确实不需要 root 来安装 Java。我总是(十多年来)在我的 Un*x 系统上以非 root 用户身份安装 Java(所以,不,我不使用 apt-get / synaptic / 其他)。
【解决方案4】:

我的 Ubuntu 遇到了这个问题。

我需要做的就是为我的 Java 安装获取源代码:

sudo apt-get install sun-java6-source

【讨论】:

  • 在 Ubuntu 14.04 上:E: Unable to locate package sun-java6-source
【解决方案5】:

这里是JDK源码的官方链接: http://www.oracle.com/technetwork/java/javase/downloads/index.html

(您可能需要滚动到页面底部。)

【讨论】:

    【解决方案6】:

    官方链接不再提供原始源代码。官方链接和随意的 Google 搜索将为您提供OpenJDK

    除非修改了构建脚本文件,否则 OpenJDK 会导致 Android 构建出现问题。原始包可以在这里找到:

    sudo add-apt-repository "deb http://ppa.launchpad.net/ferramroberto/java/ubuntu oneiric main"
    

    这个存储库仍然有 sun-java6-source 包。

    信用: Installing sun-java-6 with apt-get in Linux

    【讨论】:

      【解决方案7】:

      我目前在 OS X v10.8 (Mountain Lion) 上使用的 JDK 1.6 也没有附带 src.zip,而且据我所知,1.6 不再支持 Mac OS X JDK。

      所以我下载了 OpenJDK 源代码(使用已接受答案 (+1) 中的链接)然后运行:

      cd ~/Downloads
      mkdir jdk6src
      cd jdk6src
      tar xf ../openjdk-6-src-b27-26_oct_2012.tar.gz
      cd jdk/src/share/classes
      jar cf /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/src.jar *
      

      (您的文件名和路径可能会有所不同...)

      src.jar 与您的 IDE 中的适当 Java 平台相关联,您就可以开始使用了。

      OpenJDK 源代码和我当前正在运行的 JDK 之间存在一些差异(例如,调试器中的行号不匹配),但如果您只需要一个 zip/jar 来将您的 IDE 指向对于相对较少的情况,您需要查看一些代码以了解某些东西是如何工作的,那么这应该可以解决问题。

      【讨论】:

      • 谢谢,我在使用 mac 时需要这个。关于最新的操作系统以及如何获取源代码没有明确的说明。 (他们都在谈论下载不包括源或从 oracle 下载的更新,但在某种程度上都是模糊或错误的)
      • 只是想强调这是正确的方法,因为就像@dtc 所说的那样,那里的所有其他指令都是错误的或过时的。在 Scala 项目中使用 IntelliJ 15 完成此操作,效果很好。谢谢@MisterEd!
      • src.jar 不是完整的源代码。例如,它不包含 javax.net 的来源
      【解决方案8】:

      您可能已经通过 JDK 获得了源代码,这只是找到它在哪里的问题。在这种情况下,JDK 文件夹不包含源代码:

      sudo apt-get install openjdk-7-source
      

      OS X 朋友,在 Homebrew 公式中搜索。

      在 Ubuntu 中,上面的命令会将您的源文件放在:

      /usr/lib/jvm/openjdk-7/
      

      好消息是 Eclipse 已经将您带到那里(如何将 Eclipse 绑定到 Java 源代码):

      点击橙色按钮

      【讨论】:

        【解决方案9】:

        遗憾的是,在撰写本文时,尽管他们自己的文档自述文件,在 JDK 7 或 8 安装目录中没有 src.zip 当您下载 Windows 版本时

        注意:可能发生这种情况是因为我们中的许多人实际上并没有运行 install .exe,而是将其解压缩。出于安全原因,我们中的许多人不运行 Java 安装(完整的 Windows 安装)......我们只是希望 JDK 放置在潜在病毒无法找到它的地方。

        但是他们关于 Windows .exe(不管它是什么)的政策确实很疯狂,然而,src.zip 确实 strong> 存在于 Linux 安装(.tar.gz)中。提取 .tar 和 .gz 有多种方法,我更喜欢免费的“7Zip”实用程序。

        1. 下载 Linux 64 位 .tar.gz
        2. 使用7-Zip 将.tar.gz 解压缩为.tar
        3. 使用7-Zip解压.tar到安装目录
        4. 文件 src.zip 将在该安装目录中等待您。
        5. 把它拉出来放在你喜欢的地方。

        Oracle,这真是太愚蠢了。

        【讨论】:

        • Oracle JDK8(至少 1.8.60)在 Windows 上为我提供了 src.zip。然而 Eclipse 并没有默认选择它。
        • @milletron,我在最近的 Windows 版本中也注意到了这一点。我有一种感觉,他们的 Windows 下载图像制作在一段时间之前出现了问题。可能与黑白 unix (LF) 和 windows (CRLF) 的行终止差异有关?
        • 这也是我为 Java 9 必须做的事情。
        【解决方案10】:

        好吧,我在我的 Mac 中打开终端并输入:

        echo $JAVA_HOME
        

        然后我得到了目录,去那里找到了src.zip。

        【讨论】:

          【解决方案11】:

          在 JDK 8 中,源代码可以在 /src.zip 中找到。现在在一些中间版本中,这个 ZIP 文件丢失了,但它仍然可用。

          确保您也从安装向导中选择了源代码。

          【讨论】:

            最近更新 更多