<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
相关推荐
本篇将详细介绍如何使用Ant编译Tomcat源码,以及如何在MyEclipse环境中导入并运行Tomcat源码。 首先,Ant是Apache软件基金会开发的Java项目自动化构建工具,它能够执行编译、测试、打包等任务。在Apache Tomcat的...
在“ant编译1.9版本”中,我们关注的是Apache Ant 1.9.6这个特定版本的使用方法和特性。 Apache Ant 1.9.6发布于2015年,作为Ant 1.9系列的一个稳定版本,它提供了一系列改进和修复,以提高构建效率和稳定性。这个...
Apache Ant 是一个基于 Java 的生成工具,主要用来将源代码和其他输入文件转换为可执行文件的形式,或者转换为可安装的产品映像形式。Ant 在软件开发中扮演着重要角色,确保在每次生成期间都使用精确相同的生成步骤...
Apache Ant 1.8.1 是一个非常重要的版本,它是Java世界中著名的自动化构建工具,其源代码提供了深入了解Ant工作原理的机会。Ant以其基于XML的任务和目标定义而闻名,允许开发者编写可重用的构建脚本来编译、打包、...
"zilverline配置ant编译环境及简易安装" zilverline是一款开源搜索引擎,具有强大功能和完美的中文支持。为了让用户更方便地使用zilverline,我们需要配置ant编译环境并进行简易安装。下面是配置ant编译环境及简易...
Ant中的`javac`任务是用于编译Java源代码的。当Ant在执行`javac`时,它会调用JDK的`javac`编译器,这实际上是在 `%JAVA_HOME%\lib\tools.jar` 包内的 `com.sun.tools.javac.main.Main` 类中实现的。当内存不足时,...
4. **运行构建脚本**:进入源码目录,运行Ant或Maven的构建命令,如`ant build`或`mvn package`,这将编译源码并生成可执行的Tomcat。 5. **测试编译结果**:编译完成后,你可以启动新构建的Tomcat实例,进行测试以...
- **编译**:Ant可以调用JDK的javac命令对Java源代码进行编译。 - **测试**:通过JUnit或者其他测试框架,Ant可以执行单元测试和集成测试。 - **打包**:Ant支持将编译后的类文件打包成JAR、WAR或EAR文件,方便部署...
每个工程都有其特定的资源、源代码和配置文件,而Library项目则提供通用的功能和资源给其他项目使用。 在使用Ant编译Android项目时,我们需要熟悉以下几个关键点: 1. **Android的命令行编译**:在命令行中,可以...
- `<javac>`元素用于编译Java源代码。 ##### 3.2 执行构建命令 打开命令行工具,切换到包含`build.xml`文件的目录,然后输入以下命令来执行构建: ``` ant [target-name] ``` 如果省略`target-name`,则执行`build....
然而,当项目规模增大,ANT需要处理的源代码数量增多时,内存需求也会随之增加。默认情况下,ANT可能没有配置足够的内存来应对这种情况,因此会出现“OutOfMemory”错误。 解决这个问题的关键在于增加ANT运行时的...
1. **Ant编译准备**:假设Android项目位于`D:\workspace\MyApp`,首先确认是否存在`build.xml`文件,这是Ant编译所必需的配置文件。若不存在,可通过Android SDK的`android update project`命令自动生成。随后,修改...
"nutz-1.r.57-jdk1.5-source.jar"则是编译后的源码包,它提供了修改后的源代码,方便开发者查看和理解针对JDK1.5所做的改动。这对于维护和调试是非常有帮助的,因为可以直接查看源代码,找出可能导致问题的特定修改...
**Mule2源代码编译指南** Mule2是一款企业级的开源集成平台,它提供了强大的消息传递和应用集成能力。对于开发者来说,深入理解Mule2的源代码可以帮助我们更好地掌握其工作原理,定制功能,甚至开发新的模块。本文...
分析如下:Ant的debug和debuglevel参数会去调用JDK的javac -g参数, 而-g参数又包含3个选项, -g:{lines,vars,source},分别代表编译时向字节码中写入行号、方法局部变量信息、关联源代码信息。 这里主要说说-g:var...
4. 使用Ant进行编译:运行`ant`命令启动构建过程,这将编译源代码、生成JAR文件、运行测试等。 5. 可选:使用FindBugs检查代码:运行`findbugs`命令来查找潜在的代码问题。 6. 可选:编译和使用Protobuf:如果...
4. **编译过程**:通过构建脚本了解如何从源代码编译成可执行的JDK,包括使用Ant或Maven等构建工具。 5. **调试与优化**:学习如何通过源码调试Java应用程序,以及如何优化JDK以适应特定的硬件和软件环境。 6. **...
Hadoop源代码eclipse编译教程汇编 Hadoop是一个基于分布式计算的开源框架,主要用于处理大规模数据。为了更好地理解Hadoop的工作机制和实现原理,深入了解Hadoop的源代码是非常必要的。本文将详细介绍如何使用...