由于eclipse调试jdk源码时局部变量没有调试信息,于是想用ant编译jdk中src.zip里面的源码,加入调试信息,但是在用ant编译的时候总是报符号找不到的错误,类路径已经设置了,找不到原因,求高手解答,下面是ant的build.xml源码:
<?xml version = "1.0" ?><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" />
<property name = "classpath" value = "${myEnv.JAVA_HOME}\jre\lib\rt.jar" />
<!--
<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 = "display">
<echo>
${classpath}
</echo>
</target>
<target name = "unpack" depends = "init, clean, display">
<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"  memoryMaximumSize="256m" fork = "true" classpath = "${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>


ant  jdk  eclipse调试

解决方案 »

  1.   

    符号找不到,十有八九是哪个文件编码格式的问题。可以使用UE或者Editplus将出错的文件转码一下试试,或者简单的使用这两种工具打开,再另存为,再编译。
      

  2.   

    谢谢你的回复,问题已经解决了,我把%JAVA_HOME%/jre/lib/rt.jar单独复制出来,再解压到一个目录,然后修改了一下build.xml中的path标签的路径值,指向刚才的目录。编译后错误数减少,但还是会出现符号找不到的编译错误,看文件的名字,都是应该是和unix平台有关的java源文件,在javac标签中通过exclude标签排除这些文件后,就能够正常编译了。