我想编译jdk文件以包含调试信息。
我想使用ant,因为它包含在我的NetBeans环境中,所以我做了以下几点:
<?xml version="1.0" encoding="UTF-8"?> <project name="CompileJDK" default="default" basedir="."> <target name="default"> <javac srcdir="." destdir="jdkwd" debug="on" /> </target> </project>
这导致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<Window> allWindows = new IdentityArrayList<Window>();
我的机器上只安装了一个JDK,所以我不知道为什么它不能解决所有这些引用。
更新: 这些未解决的参考文献中的大多数属于包:
sun.awt.util
现在的问题已更正为:缺少的jdk文件在哪里?
答案 0 :(得分:11)
构建JDK本身是一个复杂的过程,通过在javac
项目中包含的简单ant
调用无法实现。
您应该查看OpenJDK Build README以获取有关如何为您的平台构建的说明。
答案 1 :(得分:8)
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/
答案 2 :(得分:4)
尝试在您的javac电话中添加classpath。
<classpath path="/PATH/to/missing_class/" />
另外,尝试使用-d和-v选项运行ant。这是很多输出,但会告诉你搜索类的位置。
答案 3 :(得分:4)
根据this post(自2007年起),您应该在类路径中包含rt.jar和tools.jar来编译JRE源。
然而,我试过了,它对我不起作用(100个错误)。
christhielen在Java bug requesting debug symbols的帖子中有更详细和更旧的(2004)说明。
答案 4 :(得分:2)
如果您使用Gentoo编译OpenJDK就像运行emerge dev-java/icedtea
一样简单。
有一个debug
使用标志可以关闭所有优化,我自己没有尝试过,但很可能这就是你想要的。如果不是 - 那么改变构建脚本应该不是什么大问题,但是需要你学习一些移植。