【读JDK源码 开篇】如何将jdk12源码导入idea

本篇不是讲如何添加jdk依赖。

jdk现在都13了,以前的8也有好多更新了的,本来想就用经典的8来好好学学jdk源码,想了想还是得往前看,就找了个12先研究着。主要是想把一些核心类读一读,添加些注释,运行点demo,也好debug跟踪调试一下。导入jdk12源码可比导入jdk8源码麻烦多了。感觉整个核心包目录都改动了。自己瞎摸索,按我这步骤起码能先看着了,有什么问题,或者大佬有更好的方法欢迎沟通交流,好希望有大佬可以指导一下正儿八经的方法。实在没找到更好的方法的,先按我下边的方法试试看吧:

  1. 先准备好jdk12源码包,在哪里呢? lib下的src.zip就是,解压后发现太多包了,我们主要看核心包java.base。
  2. 然后idea左上File->open->选中java.base解压文件->ok。这里千万注意,文件导入之后不要setup SDK,也就是不要另外给项目添加jdk依赖,这样就等于有重复的类了,就会报错,项目会先找依赖的jdk中的类,而不是我们导入的源代码了。
  3. 左侧Project窗口选中项目右键Make Directory as->Sources Root
  4. 读的过程中发现缺依赖jar包,jce.jar从Oracle官方下载地址,下载好解压找到jce.jar,将名字改为java.base.jar(不这样的话,java.base中无法读到jce中的类,会报错。)
  5. 左侧Project窗口选中项目右键Open Module Settings->左侧Libraries->±>java->选中刚才改名的java.base.jar包->ok->Apply->ok
  6. module-info.java文件报错,将报错的包名注释掉即可。
  7. 安装了阿里编码规约扫描插件的话,记得关掉,别误导了以为别的问题。
  8. VCS->Import into version control->share project on github上传到github上管理

过程中遇到了好几个问题:

  1. 不能给项目设置jdk,那有啥办法编译运行项目呢???求大佬解答
  2. 需要把项目设置为根资源,也就是上边第3步。而且不要放到src包下边,刚开始被这个坑了很久。因为这样会让类中依赖的包无法被发现。
  3. jdk.internal.access.SharedSecrets类中导入依赖的javax.crypto.SealedObject;一直报错,百度查了之后说是jce.jar包里的,我又去jdk12里搜索也没发现这个jce.jar(不知道是不是隐藏在某个压缩包里,还是说jdk12没有这个jar了,奇怪的是我在jdk8里找到了这个jce.jar,但是我后来用的是上边说的从官网找的jar)。后来是在StackOverflow上看到别人也有这样的问题,回答里边好像有个oracle大佬说是他的锅,教了添加环境变量的方法。但是我没给项目依赖jdk啊,不知道添加了环境变量对项目能不能起作用,后边再不行我就试试这个。

你可能感兴趣的:(源码,JDK,JDK12,java,后端,jar)