[讨论] 自己编译了一份SRC源代码。但是觉得步骤有点麻烦。不知道有更好的没?

xgj1988 2011-04-28

为什么要自己编译:请看这个帖子http://hllvm.group.iteye.com/group/topic/25798

这里可以得到为什么要编译的原因。

src源代码直接在下载的jdk里面就有。只是我编译不过 com文件夹下面的的java文件,所以我把com删了再编译的。用的ant进行编译,步骤如下:
1:先给个ant文件

 

<?xml version="1.0"?>

<project name="buildjdksrc" default="buildsrc">
	<property name="srcPath" value="E:\Java\jdk1.5.0_01\src" />
	<property name="classesPath" value="E:\Java\jdk1.5.0_01\classes" />
	<target name="buildsrc">
		<javac    deprecation="true" fork="true" memoryinitialsize="500m" memorymaximumsize="500m" srcdir="${srcPath}" destdir="${classesPath}" source="1.5" target="1.5" debug="yes" >
					<compilerarg value="-Xlint:unchecked"/>
			</javac>
		
	</target>

</project>

 

2:完成之后把 把%java_home%\jre\lib的rt.jar 用winrar打开。删除要替换的文件夹,然后把E:\Java\jdk1.5.0_01\classes自己编译的文件夹内容复制进去。OK了。这下再运行eclipse ,调试就可以查看信息了。注意,eclipse引用的jdk必须是我们修改rt.jar的jdk一致。

 

但是郁闷的是,为什么com目录下面的java文件不能编译勒?伤脑筋。

下面把我的 第一次编译错处的信息给大家看看,看看为什么com下面的不能编译。

.......

.......

.......

.......略去一无关紧要的。

 

    [javac] E:\Java\jdk1.5.0_01\src\com\sun\org\apache\xerces\internal\impl\xs\psvi\PSVIProvider.java:60: package com.sun.org.apache.xerces.internal.xni.psvi does not exist
    [javac] import com.sun.org.apache.xerces.internal.xni.psvi.ElementPSVI;
    [javac]                                                    ^
    [javac] E:\Java\jdk1.5.0_01\src\com\sun\org\apache\xerces\internal\impl\xs\psvi\PSVIProvider.java:99: cannot find symbol
    [javac] symbol  : class ElementPSVI
    [javac] location: interface com.sun.org.apache.xerces.internal.impl.xs.psvi.PSVIProvider
    [javac]     public ElementPSVI getElementPSVI();
    [javac]            ^
    [javac] E:\Java\jdk1.5.0_01\src\com\sun\org\apache\xerces\internal\impl\xs\psvi\PSVIProvider.java:109: cannot find symbol
    [javac] symbol  : class AttributePSVI
    [javac] location: interface com.sun.org.apache.xerces.internal.impl.xs.psvi.PSVIProvider
    [javac]     public AttributePSVI getAttributePSVI(int index);
    [javac]            ^
    [javac] E:\Java\jdk1.5.0_01\src\com\sun\org\apache\xerces\internal\impl\xs\psvi\PSVIProvider.java:120: cannot find symbol
    [javac] symbol  : class AttributePSVI
    [javac] location: interface com.sun.org.apache.xerces.internal.impl.xs.psvi.PSVIProvider
    [javac]     public AttributePSVI getAttributePSVIByName(String uri,
    [javac]            ^
    [javac] E:\Java\jdk1.5.0_01\src\com\sun\org\apache\xalan\internal\xsltc\trax\SmartTransformerFactoryImpl.java:92: com.sun.org.apache.xalan.internal.xsltc.trax.SmartTransformerFactoryImpl is not abstract and does not override abstract method setFeature(java.lang.String,boolean) in javax.xml.transform.TransformerFactory
    [javac] public class SmartTransformerFactoryImpl extends SAXTransformerFactory
    [javac]        ^
    [javac] 9 errors
    [javac] 100 warnings

 

为什么编译不过呢?

 

RednaxelaFX 2011-04-28
因为JDK目录下的src.zip并不是完整的JDK类库源码,只是其中公有API部分的实现而已。
要完整的源码的话可以参考这帖,到官网下载。把含有源码的JAR包抓下来之后记得要执行它而不要用归档管理工具打开它
你需要的源码在解压出来的j2se\src\share\classes目录里。
xgj1988 2011-04-29
RednaxelaFX 写道
因为JDK目录下的src.zip并不是完整的JDK类库源码,只是其中公有API部分的实现而已。
要完整的源码的话可以参考这帖,到官网下载。把含有源码的JAR包抓下来之后记得要执行它而不要用归档管理工具打开它
你需要的源码在解压出来的j2se\src\share\classes目录里。



只有 jdk.16的?没1.5的?
RednaxelaFX 2011-04-29
xgj1988 写道
RednaxelaFX 写道
因为JDK目录下的src.zip并不是完整的JDK类库源码,只是其中公有API部分的实现而已。
要完整的源码的话可以参考这帖,到官网下载。把含有源码的JAR包抓下来之后记得要执行它而不要用归档管理工具打开它
你需要的源码在解压出来的j2se\src\share\classes目录里。


只有 jdk.16的?没1.5的?

对。1.5的你现在或许下载不到了…我不太确定。
xgj1988 2011-04-29
哦 。。谢谢
xgj1988 2011-04-29
RednaxelaFX 写道
xgj1988 写道
RednaxelaFX 写道
因为JDK目录下的src.zip并不是完整的JDK类库源码,只是其中公有API部分的实现而已。
要完整的源码的话可以参考这帖,到官网下载。把含有源码的JAR包抓下来之后记得要执行它而不要用归档管理工具打开它
你需要的源码在解压出来的j2se\src\share\classes目录里。


只有 jdk.16的?没1.5的?

对。1.5的你现在或许下载不到了…我不太确定。



不知道 openjdk 和 sun jdk 的版本有没有对应,
如果有:怎么看

因为我用的是sun jdk ,我怕到时候编译之后的版本和我正使用的版本不同。
RednaxelaFX 2011-04-29
xgj1988 写道
不知道 openjdk 和 sun jdk 的版本有没有对应,
如果有:怎么看

因为我用的是sun jdk ,我怕到时候编译之后的版本和我正使用的版本不同。

这帖我有放一个链接出来,记录了Sun JDK与OpenJDK之间的大致对应关系的。链接是这个。这边贴代码不够方便所以我放在Github上了。
xgj1988 2011-04-29
RednaxelaFX 写道
xgj1988 写道
不知道 openjdk 和 sun jdk 的版本有没有对应,
如果有:怎么看

因为我用的是sun jdk ,我怕到时候编译之后的版本和我正使用的版本不同。

这帖我有放一个链接出来,记录了Sun JDK与OpenJDK之间的大致对应关系的。链接是这个。这边贴代码不够方便所以我放在Github上了。

哦。。谢谢RednaxelaFX
Global site tag (gtag.js) - Google Analytics