通过ant编译jdk

我想编译jdk文件以包含调试信息。 我想使用ant,因为它包含在我的NetBeans环境中,所以我已经完成了以下操作:

  1. 在tmp目录中解压缩/src.zip
  2. 在我的tmp目录中创建了一个非常简单的build.xml文件(一个默认目标,一个taks):
     
     
     
     
     
     
  1. 创建了一个jdkwd目录
  2. 启动没有参数的ant(只是> log.txt)

这会导致100个编译错误,例如:

[javac] C:\jdkdebug\java\awt\Window.java:196: cannot find symbol [javac] symbol : class IdentityArrayList [javac] location: class java.awt.Window [javac] private static final IdentityArrayList allWindows = new IdentityArrayList(); 

我的机器上只安装了一个JDK,所以我不知道为什么它不解决所有这些引用。

更新:大多数这些未解决的引用属于包:

 sun.awt.util 

现在的问题已更正为:缺少的jdk文件在哪里?

构建JDK本身是一个复杂的过程,并且无法通过包含在ant项目中的简单javac调用来实现。

您应该查看OpenJDK Build README以获取有关如何为您的平台构建的说明。

http://www.oracle.com/technetwork/java/faq-141681.html

A14。 我在哪里可以获得Java编程语言源代码?

Java Software有两个独立的源代码包,您可以免费获得:

Java 2 SDK,Standard Edition本身包含一个名为src.zip的文件,其中包含java包中公共类的源代码。 因为它不包含sun。*类,所以不能从这些源文件中完整地构建Java技术。 这些源文件仅供参考,以补充文档,因此您可以了解Java技术的工作原理。

我们可以通过访问社区源代码许可网站获取完整的源代码版本。

社区源代码链接不正确:现在是http://download.java.net/openjdk/jdk7/

尝试在javac调用中添加类路径 。

  

另外,尝试使用-d和-v选项运行ant。 这是很多输出,但会告诉你它在哪里搜索类。

根据这篇文章 (从2007年开始),您应该在类路径中包含rt.jar和tools.jar来编译JRE源。

但是,我试过了,它对我不起作用(100个错误)。

在christhielen的post中, Java bug中请求调试符号有更复杂和更旧的(2004)指令。

如果你使用Gentoo编译OpenJDK就像运行emerge dev-java/icedtea一样简单。

有一个debug使用标志会关闭所有优化,我没有自己尝试过,但很可能这就是你想要的。 如果不是 – 那么改变构建脚本应该不是什么大问题,但是需要你学习一些portage。