0 0

ant编译jdk源码出错5

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 

eclipse调试jdk源码的时候局部变量没有调试信息,因此,想用ant自己重新编译jdk源码加入调试信息。但是用ant编译的时候总是出现软件包不存在和符号找不到的错误。下面是build.xml的源码

<?xml version = "1.0" encoding = "utf-8"?>

<project name = "rebuildJDK" basedir = "." default = "makeJar">
	<target name = "init">
		<property environment = "myEnv" />
		<property name = "build" value = "build" />
		<property name = "src" value = "${build}/src" />
		<property name = "classes" value = "${build}/classes" />
		<property name = "dist" value = "${build}/dist" />
		
		<path id = "classPath">
			<fileset dir = "${myEnv.JAVA_HOME}/jre/lib">
			
				<include name = "*.jar" />
			</fileset>
		</path>
	</target>
	
	
	
	<target name = "clean" depends = "init">
		<delete dir = "${build}" quiet = "true" />
		<mkdir dir = "${build}" />
	</target>

	
	<target name = "unpack" depends = "init, clean">
		<unzip src = "${myEnv.JAVA_HOME}/src.zip" dest = "${src}" />
	</target>
	
	<target name = "compile" depends = "unpack">
		<mkdir dir = "${classes}" />
		<javac srcdir = "${src}" destdir = "${classes}" debug = "true" includeantruntime = "yes" deprecation = "false" failonerror = "true" nowarn = "true" memoryMaximumSize="512m" fork = "true"   >
		   <classpath refid = "classPath" />
		</javac>
	</target>
	
	<target name = "makeJar" depends = "compile">
		<mkdir dir = "${dist}" />
		<copy file = "${myEnv.JAVA_HOME/jre/lib/rt.jar}" tofile = "${dist}/rt_debug.jar" />
		<jar destfile = "${dist}/rt_debug.jar}" update = "true" compress = "false">
			<fileset dir = "${classes}" />
		</jar>
	</target>
</project>
	
	
		

 

下面是打印的错误信息:

[mkdir] Created dir: d:\build\build\classes
    [javac] Compiling 7434 source files to d:\build\build\classes
    [javac] d:\build\build\src\java\lang\Class.java:71: 错误: 程序包sun.reflect.misc不存在
    [javac] import sun.reflect.misc.ReflectUtil;
    [javac]                        ^
    [javac] d:\build\build\src\java\io\ObjectStreamField.java:31: 错误: 程序包sun.reflect.misc不存在
    [javac] import sun.reflect.misc.ReflectUtil;
    [javac]                        ^
    [javac] d:\build\build\src\java\util\Locale.java:63: 错误: 找不到符号
    [javac] import sun.util.resources.LocaleData;
    [javac]                          ^
    [javac]   符号:   类 LocaleData
    [javac]   位置: 程序包 sun.util.resources
    [javac] d:\build\build\src\java\util\Locale.java:64: 错误: 找不到符号
    [javac] import sun.util.resources.OpenListResourceBundle;
    [javac]                          ^
    [javac]   符号:   类 OpenListResourceBundle
    [javac]   位置: 程序包 sun.util.resources
    [javac] d:\build\build\src\java\io\ObjectStreamClass.java:55: 错误: 程序包sun.reflect.misc不存在
    [javac] import sun.reflect.misc.ReflectUtil;
    [javac]                        ^
    [javac] d:\build\build\src\java\io\ObjectInputStream.java:44: 错误: 程序包sun.reflect.misc不存在
    [javac] import sun.reflect.misc.ReflectUtil;
    [javac]                        ^
    [javac] d:\build\build\src\java\io\ObjectOutputStream.java:39: 错误: 程序包sun.reflect.misc不存在
    [javac] import sun.reflect.misc.ReflectUtil;
    [javac]                        ^
    [javac] d:\build\build\src\java\util\jar\Attributes.java:37: 错误: 程序包sun.util.logging不存在
    [javac] import sun.util.logging.PlatformLogger;
    [javac]                        ^
    [javac] d:\build\build\src\java\util\Locale.java:1928: 错误: 找不到符号
    [javac]     private String[] getDisplayVariantArray(OpenListResourceBundle bundle, Locale inLocale) {
    [javac]                                             ^
    [javac]   符号:   类 OpenListResourceBundle
    [javac]   位置: 类 Locale
    [javac] d:\build\build\src\java\awt\Container.java:53: 错误: 程序包sun.util.logging不存在
    [javac] import sun.util.logging.PlatformLogger;
    [javac]                        ^
    [javac] d:\build\build\src\java\awt\Component.java:83: 错误: 程序包sun.java2d.pipe.hw不存在
    [javac] import sun.java2d.pipe.hw.ExtendedBufferCapabilities;
    [javac]                          ^
    [javac] d:\build\build\src\java\awt\Component.java:84: 错误: 程序包sun.java2d.pipe.hw.ExtendedBufferCapabilities不存在
    [javac] import static sun.java2d.pipe.hw.ExtendedBufferCapabilities.VSyncType.*;
    [javac]                                                            ^
    [javac] d:\build\build\src\java\awt\Component.java:87: 错误: 程序包sun.util.logging不存在
    [javac] import sun.util.logging.PlatformLogger;
    [javac]                        ^
    [javac] d:\build\build\src\java\awt\Container.java:93: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.Container");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Container
    [javac] d:\build\build\src\java\awt\Container.java:94: 错误: 找不到符号
    [javac]     private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.Container");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Container
    [javac] d:\build\build\src\java\awt\Container.java:209: 错误: 找不到符号
    [javac]     private static final PlatformLogger mixingLog = PlatformLogger.getLogger("java.awt.mixing.Container");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Container
    [javac] d:\build\build\src\java\awt\Component.java:192: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.Component");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Component
    [javac] d:\build\build\src\java\awt\Component.java:193: 错误: 找不到符号
    [javac]     private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.Component");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Component
    [javac] d:\build\build\src\java\awt\Component.java:194: 错误: 找不到符号
    [javac]     private static final PlatformLogger focusLog = PlatformLogger.getLogger("java.awt.focus.Component");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Component
    [javac] d:\build\build\src\java\awt\Component.java:195: 错误: 找不到符号
    [javac]     private static final PlatformLogger mixingLog = PlatformLogger.getLogger("java.awt.mixing.Component");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Component
    [javac] d:\build\build\src\java\awt\image\ColorModel.java:31: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.CMSManager;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\image\ColorModel.java:32: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.ColorTransform;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\image\ColorModel.java:33: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.PCMM;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\Window.java:57: 错误: 程序包sun.awt.util不存在
    [javac] import sun.awt.util.IdentityArrayList;
    [javac]                    ^
    [javac] d:\build\build\src\java\awt\Container.java:4374: 错误: 找不到符号
    [javac]     private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.LightweightDispatcher");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 LightweightDispatcher
    [javac] d:\build\build\src\java\awt\color\ColorSpace.java:38: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.PCMM;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ColorSpace.java:39: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.CMSManager;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\AWTEvent.java:81: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.AWTEvent");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 AWTEvent
    [javac] d:\build\build\src\java\awt\event\InputEvent.java:60: 错误: 找不到符号
    [javac]     private static final PlatformLogger logger = PlatformLogger.getLogger("java.awt.event.InputEvent");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 InputEvent
    [javac] d:\build\build\src\java\awt\Cursor.java:191: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.Cursor");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Cursor
    [javac] d:\build\build\src\java\awt\Dialog.java:39: 错误: 程序包sun.awt.util不存在
    [javac] import sun.awt.util.IdentityArrayList;
    [javac]                    ^
    [javac] d:\build\build\src\java\awt\Dialog.java:40: 错误: 程序包sun.awt.util不存在
    [javac] import sun.awt.util.IdentityLinkedList;
    [javac]                    ^
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:38: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.ColorTransform;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:39: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.CMSManager;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:40: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.PCMM;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\Window.java:258: 错误: 找不到符号
    [javac]     private static final IdentityArrayList<Window> allWindows = new IdentityArrayList<Window>();
    [javac]                          ^
    [javac]   符号:   类 IdentityArrayList
    [javac]   位置: 类 Window
    [javac] d:\build\build\src\java\awt\Window.java:372: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.Window");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 Window
    [javac] d:\build\build\src\java\awt\Window.java:1521: 错误: 找不到符号
    [javac]     static IdentityArrayList<Window> getAllWindows() {
    [javac]            ^
    [javac]   符号:   类 IdentityArrayList
    [javac]   位置: 类 Window
    [javac] d:\build\build\src\java\awt\Window.java:1529: 错误: 找不到符号
    [javac]     static IdentityArrayList<Window> getAllUnblockedWindows() {
    [javac]            ^
    [javac]   符号:   类 IdentityArrayList
    [javac]   位置: 类 Window
    [javac] d:\build\build\src\java\awt\AttributeValue.java:31: 错误: 找不到符号
    [javac]     private static final PlatformLogger log = PlatformLogger.getLogger("java.awt.AttributeValue");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 AttributeValue
    [javac] d:\build\build\src\java\awt\Dialog.java:269: 错误: 找不到符号
    [javac]     transient static IdentityArrayList<Dialog> modalDialogs = new IdentityArrayList<Dialog>();
    [javac]                      ^
    [javac]   符号:   类 IdentityArrayList
    [javac]   位置: 类 Dialog
    [javac] d:\build\build\src\java\awt\Dialog.java:271: 错误: 找不到符号
    [javac]     transient IdentityArrayList<Window> blockedWindows = new IdentityArrayList<Window>();
    [javac]               ^
    [javac]   符号:   类 IdentityArrayList
    [javac]   位置: 类 Dialog
    [javac] d:\build\build\src\java\awt\EventQueue.java:184: 错误: 找不到符号
    [javac]     private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventQueue");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 EventQueue
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:38: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.PCMM;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:39: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.CMSManager;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:40: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.ProfileDeferralMgr;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:41: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.ProfileDeferralInfo;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:42: 错误: 程序包sun.java2d.cmm不存在
    [javac] import sun.java2d.cmm.ProfileActivator;
    [javac]                      ^
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:99: 错误: 找不到符号
    [javac]     private transient ColorTransform this2srgb;
    [javac]                       ^
    [javac]   符号:   类 ColorTransform
    [javac]   位置: 类 ICC_ColorSpace
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:100: 错误: 找不到符号
    [javac]     private transient ColorTransform srgb2this;
    [javac]                       ^
    [javac]   符号:   类 ColorTransform
    [javac]   位置: 类 ICC_ColorSpace
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:101: 错误: 找不到符号
    [javac]     private transient ColorTransform this2xyz;
    [javac]                       ^
    [javac]   符号:   类 ColorTransform
    [javac]   位置: 类 ICC_ColorSpace
    [javac] d:\build\build\src\java\awt\color\ICC_ColorSpace.java:102: 错误: 找不到符号
    [javac]     private transient ColorTransform xyz2this;
    [javac]                       ^
    [javac]   符号:   类 ColorTransform
    [javac]   位置: 类 ICC_ColorSpace
    [javac] d:\build\build\src\java\awt\EventDispatchThread.java:67: 错误: 找不到符号
    [javac]     private static final PlatformLogger eventLog = PlatformLogger.getLogger("java.awt.event.EventDispatchThread");
    [javac]                          ^
    [javac]   符号:   类 PlatformLogger
    [javac]   位置: 类 EventDispatchThread
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:98: 错误: 找不到符号
    [javac]     private transient ProfileDeferralInfo deferralInfo;
    [javac]                       ^
    [javac]   符号:   类 ProfileDeferralInfo
    [javac]   位置: 类 ICC_Profile
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:99: 错误: 找不到符号
    [javac]     private transient ProfileActivator profileActivator;
    [javac]                       ^
    [javac]   符号:   类 ProfileActivator
    [javac]   位置: 类 ICC_Profile
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:738: 错误: 找不到符号
    [javac]     ICC_Profile(ProfileDeferralInfo pdi) {
    [javac]                 ^
    [javac]   符号:   类 ProfileDeferralInfo
    [javac]   位置: 类 ICC_Profile
    [javac] d:\build\build\src\java\awt\color\ICC_Profile.java:1069: 错误: 找不到符号
    [javac]     static ICC_Profile getDeferredInstance(ProfileDeferralInfo pdi) {
    [javac]                                            ^
    [javac]   符号:   类 ProfileDeferralInfo
    [javac]   位置: 类 ICC_Profile

2013年11月09日 15:54

1个答案 按时间排序 按投票排序

0 0

别这忒那个了,JDK中自带的源码并不是全部OK的,有部分被干掉了

2013年11月09日 21:29

相关推荐

    Ant编译Tomcat源码、MyEclipse导入Tomcat源码、执行Tomcat源码启动Tomcat

    本篇将详细介绍如何使用Ant编译Tomcat源码,以及如何在MyEclipse环境中导入并运行Tomcat源码。 首先,Ant是Apache软件基金会开发的Java项目自动化构建工具,它能够执行编译、测试、打包等任务。在Apache Tomcat的...

    ant编译1.9版本

    在“ant编译1.9版本”中,我们关注的是Apache Ant 1.9.6这个特定版本的使用方法和特性。 Apache Ant 1.9.6发布于2015年,作为Ant 1.9系列的一个稳定版本,它提供了一系列改进和修复,以提高构建效率和稳定性。这个...

    ant编译命令总结

    Apache Ant 是一个基于 Java 的生成工具,主要用来将源代码和其他输入文件转换为可执行文件的形式,或者转换为可安装的产品映像形式。Ant 在软件开发中扮演着重要角色,确保在每次生成期间都使用精确相同的生成步骤...

    ant 1.8.1源代码

    Apache Ant 1.8.1 是一个非常重要的版本,它是Java世界中著名的自动化构建工具,其源代码提供了深入了解Ant工作原理的机会。Ant以其基于XML的任务和目标定义而闻名,允许开发者编写可重用的构建脚本来编译、打包、...

    zilverline配置ant编译环境及简易安装

    "zilverline配置ant编译环境及简易安装" zilverline是一款开源搜索引擎,具有强大功能和完美的中文支持。为了让用户更方便地使用zilverline,我们需要配置ant编译环境并进行简易安装。下面是配置ant编译环境及简易...

    ant编译时抛出OutOfMemoryError.doc

    Ant中的`javac`任务是用于编译Java源代码的。当Ant在执行`javac`时,它会调用JDK的`javac`编译器,这实际上是在 `%JAVA_HOME%\lib\tools.jar` 包内的 `com.sun.tools.javac.main.Main` 类中实现的。当内存不足时,...

    编译tomcat源码所需jar包

    4. **运行构建脚本**:进入源码目录,运行Ant或Maven的构建命令,如`ant build`或`mvn package`,这将编译源码并生成可执行的Tomcat。 5. **测试编译结果**:编译完成后,你可以启动新构建的Tomcat实例,进行测试以...

    Ant1.8.2 编译打包工具

    - **编译**:Ant可以调用JDK的javac命令对Java源代码进行编译。 - **测试**:通过JUnit或者其他测试框架,Ant可以执行单元测试和集成测试。 - **打包**:Ant支持将编译后的类文件打包成JAR、WAR或EAR文件,方便部署...

    App自动化之使用Ant编译项目多渠道打包[定义].pdf

    每个工程都有其特定的资源、源代码和配置文件,而Library项目则提供通用的功能和资源给其他项目使用。 在使用Ant编译Android项目时,我们需要熟悉以下几个关键点: 1. **Android的命令行编译**:在命令行中,可以...

    ant编译

    - `&lt;javac&gt;`元素用于编译Java源代码。 ##### 3.2 执行构建命令 打开命令行工具,切换到包含`build.xml`文件的目录,然后输入以下命令来执行构建: ``` ant [target-name] ``` 如果省略`target-name`,则执行`build....

    Eclipse下使用ANT编译提示OutOfMemory的解决方法

    然而,当项目规模增大,ANT需要处理的源代码数量增多时,内存需求也会随之增加。默认情况下,ANT可能没有配置足够的内存来应对这种情况,因此会出现“OutOfMemory”错误。 解决这个问题的关键在于增加ANT运行时的...

    Powershell(脚本) Ant(编译)实现一键打包

    1. **Ant编译准备**:假设Android项目位于`D:\workspace\MyApp`,首先确认是否存在`build.xml`文件,这是Ant编译所必需的配置文件。若不存在,可通过Android SDK的`android update project`命令自动生成。随后,修改...

    nutz-1.r.57的JDK1.5编译

    "nutz-1.r.57-jdk1.5-source.jar"则是编译后的源码包,它提供了修改后的源代码,方便开发者查看和理解针对JDK1.5所做的改动。这对于维护和调试是非常有帮助的,因为可以直接查看源代码,找出可能导致问题的特定修改...

    mule 源代码编译指南

    **Mule2源代码编译指南** Mule2是一款企业级的开源集成平台,它提供了强大的消息传递和应用集成能力。对于开发者来说,深入理解Mule2的源代码可以帮助我们更好地掌握其工作原理,定制功能,甚至开发新的模块。本文...

    怎样让Ant编译生成的字节码带实际参数信息,不是arg0之类

    分析如下:Ant的debug和debuglevel参数会去调用JDK的javac -g参数, 而-g参数又包含3个选项, -g:{lines,vars,source},分别代表编译时向字节码中写入行号、方法局部变量信息、关联源代码信息。 这里主要说说-g:var...

    hadoop2.6.0编译工具(全部除JDK)

    4. 使用Ant进行编译:运行`ant`命令启动构建过程,这将编译源代码、生成JAR文件、运行测试等。 5. 可选:使用FindBugs检查代码:运行`findbugs`命令来查找潜在的代码问题。 6. 可选:编译和使用Protobuf:如果...

    jdk7官方源码工程

    4. **编译过程**:通过构建脚本了解如何从源代码编译成可执行的JDK,包括使用Ant或Maven等构建工具。 5. **调试与优化**:学习如何通过源码调试Java应用程序,以及如何优化JDK以适应特定的硬件和软件环境。 6. **...

    Hadoop源代码eclipse编译教程[汇编].pdf

    Hadoop源代码eclipse编译教程汇编 Hadoop是一个基于分布式计算的开源框架,主要用于处理大规模数据。为了更好地理解Hadoop的工作机制和实现原理,深入了解Hadoop的源代码是非常必要的。本文将详细介绍如何使用...

Global site tag (gtag.js) - Google Analytics