基于eclipse搭建jdk1.8.0_40源码编译环境
1.先决条件
1.下载jdk1.8.0_40免安装包
可通过如下地址下载:链接:https://pan.baidu.com/s/1wHtN0MO7fop848t5yEY3fQ 提取码:hayk
2.解压并配置Java环境
解压到指定路径下后,需要配置Java环境变量,右键计算机->属性->高级系统设置->高级->环境变量,如下图所示:
系统变量->新建 JAVA_HOME 变量 。变量值填写jdk的解压的位置(本人是 D:\software\Java\JDK1.8.0_40)。
系统变量->Path 变量->编辑在变量值最后添加如下内容:
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
结果如下图所示:
备注:注意若原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码。
系统变量->新建 CLASSPATH变量,变量值填写 如下内容:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
结果如下图所示:
备注:注意最前面有一个点(.)
至此,Jav环境变量配置完毕!
检验是否配置成功,点击“开始”菜单->运行->cmd,启动命令行(或win+R),输入 java -version (java 和 -version 之间有空格),正确输出结果如下图所示:
若如上图所示 显示版本信息 则说明安装和配置成功。
3.安装配置eclipse Java开发环境
首先我们需要进行下载eclipse软件,下载地址:https://www.eclipse.org/downloads/
下载页面如下图所示:
点击上图所示的Download Packages,进入页面之后,点击下载Eclipse IDE for Java Developers版本,然后根据自己电脑的位数来选择下载64位或32位的,如下图所示:
我电脑是64位的,所以我就点击64 bit,进入下载页面之后直接点击Download即可。如下图所示:
下载完成之后,解压,解压之后,双击运行eclipse.exe文件,如下图所示:
双击eclipse.exe文件,如下图,它首先会让我们设置工作空间,工作空间的意思就是一会建立Java工程的时候,所要保存的路径,即我们建立的Java工程文件都会保存在你设置的工作空间里面,它默认的工作空间可能是C盘的用户工作目录下,我们这里可以把它给改修改为我们方便的位置,如下图所示:
备注:.\ 表示当前路径下(即eclipse.exe文件所在路径)。
Eclipse软件打开之后,会出现一个欢迎界面,我们可以把它给关掉,如下图所示:
关掉欢迎界面之后就是我们的主界面了,如下图所示:
至此,Eclipse Java开发环境搭建完成!
首先来编写一个最简单的Java HelloWorld程序,输出“Hello world”测试环境是否正常!
首先我们要建立一个Java工程,点击主界面左上角的File->New->Java Project,如下图所示:
输入工程名称:HelloWorld,点击“Configure JREs..”设置我们的JAVA_HOME路径下的jre文件夹,点击Finish,如下图所示:
至此,Java工程就建立好了,我们可以看到主界面左侧已经有HelloWorld工程,如下图所示:
Java工程建立好之后,此时工程里面啥都没有,我们还需要再建立一个Java类(class),在src上右键->new->class,输入类名:HelloWorld,勾选public static void main(String[] args),点击Finish,如下图所示:
然后我们的Java类就建立好了,并且自动创建了public static void main(String[] args)函数,如下图所示:
然后我们就可以在main函数中编写代码了,代码如下图所示:
然后,保存程序(crtl+s),然后z在空白区域,右键->Run As,然后找到Run As->Java Application,就可以运行程序了,程序运行的结果会在Eclipse主界面的下方的Console的窗口打印"Hello World!",如下图所示:
至此,我们基于Eclipse Java开发环境搭建完成!
4.配置JDK源码编译环境配置
首先,先检查一下Eclipse的默认已安装的JRE配置,我本机的JDK和JRE是在D:\software\Java目录下,那么默认情况下Eclipse会引用JRE,如下图所示:
我们先将这个JRE Remove,然后添加JDK,JRE Home 选择JDK的解压目录,如下图所示:
接下来我们新建一个普通的JAVA 项目,我这里命名为JavaSource,我们检查一下项目的JRE,如下图所示:
然后我们导入JDK源码即JAVA_HOME下的src.zip文件到src目录上右键->import->General->Archive File->选择JDK解压目录下的src.zip,如下图所示:
5.编译错误处理
Eclipse导入JDK源码后,会自动进行编译。不出意外,编译一般出现问题,不要着急,我们先点开一个错误看一看,Access restriction ,访问限制,意思是这些API是限制访问的。简单来说,这些API是非常底层的,可以理解为核心,只有在编写JDK这样的程序的时候才会使用上,一般我们自己写的JAVA应用程序肯定是不会用到这么底层的API,如下图所示:
此时,我们需要修改一下Eclipse的设置,右键JavaSource项目->properities->Java Compiler->Errors/Warnings,然后我们选中Enable Project specific settings, 找到Deprecated and restricted API ->Forbidden reference (access rules) ,设置为Ignore,然后Apply,使设置生效,这时Eclipse会重新对项目进行编译。
编译完成后,你会发面错误一下子减少了许多。接下来再解决其它的问题,
首先解决如下错误:
The import com.sun.tools cannot be resolved
我们查看JRE,确实没找到这个包在哪里,其实这个包在jdk\lib\tools.jar中,引入这个包,重新编译,又减少一部分error。
接下来,就是UNIXToolkit和FontConfigManager文件找不到,所有的jar包都检查了,就是找不到这两个文件。既然jar包中没有,那我们就只好创建这两个文件了。其实这两个文件的源码是在OpenJDK中,我们可以在OpenJDK网站下载该文件内容并放入到指定包下。
源文件可以在OpenJDK网站下载,下载地址如下:
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/a06412e13bf7/src/solaris/classes/sun/font
http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/a06412e13bf7/src/solaris/classes/sun/awt
在src目录上右键->new->class,输入类名:sun.awt.UNIXToolkit/,Eclipse会自动填充包名并创建包。将下载的文件内容copy到该类中,保存,重新编译,错误继续减少,一般如果你使用的是比较新的Eclipse(v4.3.0及以上版本),此时应该已经编译成功,对于比较低版本的Eclipse会存在如下一个错误:
The method flatten(Node<T>, IntFunction<T[]>) in the type Nodes is not applicable for the arguments (Node, IntFunction)
在编译时不能识别泛型参数,在网上查找了相关问题,最后发现这个是Eclipse的一个BUG,具体见下面这个链接:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=506664
不过现在比较新的Eclipse已经修复了该问题。