通过ant编译jdk

时间:2011-11-22 11:25:27

标签: ant compiler-errors java

我想编译jdk文件以包含调试信息。 我想使用ant,因为它包含在我的NetBeans环境中,所以我做了以下几点:

  1. 在tmp目录中解压缩/src.zip
  2. 在我的tmp目录中创建了一个非常简单的build.xml文件(一个默认目标,一个taks):
  3.     <?xml version="1.0" encoding="UTF-8"?>
        <project name="CompileJDK" default="default" basedir=".">
        <target name="default">
        <javac srcdir="."
                 destdir="jdkwd"
                 debug="on"
        />
        </target>
        </project>
    
    1. 创建了一个jdkwd目录
    2. 启动了没有参数的ant(只是&gt; log.txt)
    3. 这导致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文件在哪里?

5 个答案:

答案 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使用标志可以关闭所有优化,我自己没有尝试过,但很可能这就是你想要的。如果不是 - 那么改变构建脚本应该不是什么大问题,但是需要你学习一些移植。