我想编译jdk文件,以便包含调试信息。我想使用ant,因为它包含在我的NetBeans环境中,所以我做了以下操作:
- 解压/src.zip到tmp目录
- 在我的tmp目录下创建了一个非常简单的build.xml文件(一个默认目标,一个参数):
- 创建jdkwd目录
- 启动的蚂蚁没有参数(只是>log.txt)
这会导致100个编译错误,例如:
[javac] C:jdkdebugjavaawtWindow.java:196: cannot find symbol
[javac] symbol : class IdentityArrayList
[javac] location: class java.awt.Window
[javac] private static final IdentityArrayList<Window> allWindows = new IdentityArrayList<Window>();
我的机器上只安装了一个JDK,所以我不知道为什么它不能解析所有这些引用。
更新:这些未解析的引用大部分属于包:
sun.awt.util
问题现在更正为:丢失的jdk文件在哪里?
构建JDK本身是一个复杂的过程,不能通过在ant
项目中包装一个简单的javac
调用来实现。
您应该查看OpenJDK Build README以获取如何为您的平台构建的说明。
http://www.oracle.com/technetwork/java/faq-141681.html
阿。在哪里可以获得Java编程语言的源代码?
Java Software有两个独立的源代码包,您可以免费获得:
Java 2 SDK,标准版本身包含一个名为src.zip的文件,其中包含Java包中公共类的源代码。因为它不包含sun。类,您不能从这些源文件完成Java技术的完整构建。这些源文件是为您提供信息,以补充文档,以便您可以了解Java技术是如何工作的。
完整的源代码发布可以通过访问社区源代码许可网站获得。
社区源代码链接不正确:现在是http://download.java.net/openjdk/jdk7/
尝试在javac调用中添加类路径。
<classpath path="/PATH/to/missing_class/" />
另外,尝试使用-d和-v选项运行ant。它有很多输出,但是会告诉你它在哪里搜索类。
根据这篇文章(从2007年开始),你应该在你的类路径中包含rt.jar和tools.jar来编译JRE源代码。
然而,我试过了,它不适合我(100个错误)。
在christhielen的Java bug请求调试符号的帖子中有更详细和更老(2004年)的说明。
如果你使用Gentoo编译OpenJDK就像运行emerge dev-java/icedtea
一样简单。
有一个debug
使用标志,将关闭所有优化,我没有尝试过它自己,但机会是,这是你想要的。如果不是这样,那么更改构建脚本应该不是什么大问题,但需要您学习一点portage。