通过ant编译jdk
我想编译jdk文件以包含调试信息。 我想使用ant,因为它包含在我的NetBeans环境中,所以我已经完成了以下操作:
- 在tmp目录中解压缩/src.zip
- 在我的tmp目录中创建了一个非常简单的build.xml文件(一个默认目标,一个taks):
- 创建了一个jdkwd目录
- 启动没有参数的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。