spring源码下载安装,导入idea以及编译报错问题详细解决过程
參考 《spring源碼深度解析 第2版》
一、spring源碼下載
github官網
github首頁搜索 “spring”
選擇 spring-projects/spring-framework
點擊 Branch master 選擇5.0.x
下載源碼 ZIP壓縮包
Clone or download -> Download ZIP
如果由于網絡問題下載不下來的話,下面是我上傳到網盤上的spring5.0.x源碼
網盤下載
鏈接:https://pan.baidu.com/s/1S5QCank16oX0Uy1l759EUQ
提取碼:qdjx
二、idea 導入源碼工程
解壓源碼后,idea File -> Open 打開源碼
Import Project from Gradle 工程屬性
導入idea后 如下:
重新編譯工程 Build -> Rebuild Project
報錯:
根據報錯信息
The provided plugin org.jetbrains.kotlin.scripting.compiler.plugin.Scripting
可以知道是 kotlin版本的問題
在idea 中 File -> Settings -> Plugins 搜索欄輸入 Kotlin, 點擊Update
注意:如果沒有顯示update ,稍等一會應該會出現,如果還不行,那就重啟下idea
更新完后 重啟idea
再次編譯工程 idea 中 Build -> Build Project
然后發現又報錯
Error:(30, 41) java: 找不到符號: 類 DefaultNamingPolicy ,Objenesis ,InstantiatorStrategy ,ObjectInstantiator ,ObjenesisException
具體如下:
三、解決 cglib和objenesis的編譯錯誤
解決問題過程: (《Spring 源碼深度解析》中介紹的解決過程和下面的有一點不同,不過最終都是導入jar包 spring-objenesis-repack 和 spring-cglib-repack)
打開命令行控制臺 (注意:不要用idea的 Terminal ,我一直不成功)
Win + R 輸入cmd
切換工作目錄到 spring 源碼工程的根目錄下
執行 gradle objenesisRepackJar 和 gradle cglibRepackJar
報錯: ‘gradle’ 不是內部或外部命令,也不是可運行的程序
解決過程
在C盤的 用戶 目錄下 搜索 gradle
找到 所有版本的gradle 都在 C:\Users\Administrator.gradle\wrapper\dists
在idea 中 build.gradle文件中 找到 gradleversion ,可以看到版本是4.4.1
gradle 4.4.1 的執行程序在
C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1\bin
創建系統環境變量
GRADLE_HOME=C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
然后在系統環境變量 Path 的最后添加上 ;%GRADLE_HOME%\bin
注意 別漏了符號 ;
具體操作過程 和添加 JAVA_HOME的過程一樣
簡略過程如下:
win7 電腦 -》計算機 -》右鍵屬性 -》 環境變量 -》 高級系統設置 -》 環境變量 -》新建系統變量:GRADLE_HOME值為C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
-》編輯系統變量Path 在最后面 增加;%GRADLE_HOME%\bin
重新 在操作系統的cmd命令行控制臺 (注意:不要用idea的 Terminal 中執行gradle操作,我一直不成功,暫時沒有去找為什么會不成功),切換到spring源碼的工作目錄下面
執行 gradle objenesisRepackJar 和 gradle cglibRepackJar
再次 idea 編譯源碼工程 Build -> Build Project
發現解決了上述編譯報錯問題:找不到符號: 類 DefaultNamingPolicy InstantiatorStrategy ObjenesisException
但是又報了新的錯誤: 找不到符號: 類 AnnotationBeanConfigurerAspect ,JCacheCacheAspect ,AnnotationAsyncExecutionAspect ,AnnotationCacheAspect ,AnnotationTransactionAspect ,具體如下:
E:\workspace_idea\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\context\annotation\aspectj\SpringConfiguredConfiguration.java Error:(19, 49) java: 找不到符號符號: 類 AnnotationBeanConfigurerAspect位置: 程序包 org.springframework.beans.factory.aspectj Error:(47, 16) java: 找不到符號符號: 類 AnnotationBeanConfigurerAspect位置: 類 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration Error:(48, 24) java: 找不到符號符號: 變量 AnnotationBeanConfigurerAspect位置: 類 org.springframework.context.annotation.aspectj.SpringConfiguredConfiguration E:\workspace_idea\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJJCacheConfiguration.java Error:(42, 16) java: 找不到符號符號: 類 JCacheCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJJCacheConfiguration Error:(43, 17) java: 找不到符號符號: 類 JCacheCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJJCacheConfiguration Error:(43, 49) java: 找不到符號符號: 變量 JCacheCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJJCacheConfiguration E:\workspace_idea\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\scheduling\aspectj\AspectJAsyncConfiguration.java Error:(43, 16) java: 找不到符號符號: 類 AnnotationAsyncExecutionAspect位置: 類 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration Error:(44, 17) java: 找不到符號符號: 類 AnnotationAsyncExecutionAspect位置: 類 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration Error:(44, 62) java: 找不到符號符號: 變量 AnnotationAsyncExecutionAspect位置: 類 org.springframework.scheduling.aspectj.AspectJAsyncConfiguration E:\workspace_idea\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\cache\aspectj\AspectJCachingConfiguration.java Error:(42, 16) java: 找不到符號符號: 類 AnnotationCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJCachingConfiguration Error:(43, 17) java: 找不到符號符號: 類 AnnotationCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJCachingConfiguration Error:(43, 53) java: 找不到符號符號: 變量 AnnotationCacheAspect位置: 類 org.springframework.cache.aspectj.AspectJCachingConfiguration E:\workspace_idea\spring-framework-5.0.x\spring-aspects\src\main\java\org\springframework\transaction\aspectj\AspectJTransactionManagementConfiguration.java Error:(42, 16) java: 找不到符號符號: 類 AnnotationTransactionAspect位置: 類 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration Error:(43, 17) java: 找不到符號符號: 類 AnnotationTransactionAspect位置: 類 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration Error:(43, 56) java: 找不到符號符號: 變量 AnnotationTransactionAspect位置: 類 org.springframework.transaction.aspectj.AspectJTransactionManagementConfiguration問題原因是使用了aspectJ ,而java不識別aspectJ
四、下載安裝AspectJ
解決過程:
下載AspectJ
注:確保下載前安裝了jdk
https://www.eclipse.org/aspectj/downloads.php
安裝AspectJ
打開 系統cmd 命令行 切換工作目錄到 下載的AspectJ 所在目錄
執行 java -jar aspectj-1.9.0.jar
安裝過程中3個設置我都是默認的 直接next(注意第二步要設置自己已經安裝的jdk家目錄)
五、為spring-aspect 工程添加Facets屬性
File -> Project Structure -> Facets -> 點擊 + 按鈕 -> AspectJ -> 選擇 spring-aop_main -> 點擊OK -> 右鍵spring-aop_main的Kotlin 選擇刪除,具體過程如下
同上面給spring-aop_main添加Facets屬性一樣 給 spring-aspects_main 也添加Facets屬性
六、更改編譯器
選擇 Delegate to Javac ,作用是 只編譯AspectJ的Facets
再次編譯 Build -> Build Project
還是在報錯,不過不需要去解決了,因為報錯是 \src\test\ 下面的代碼,不會影響我們看spring源碼,所以不用解決下面問題
到此 spring 源碼下載安裝結束,可以開始源碼學習了!
總結
以上是生活随笔為你收集整理的spring源码下载安装,导入idea以及编译报错问题详细解决过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习——人工神经网络之发展历史(神经
- 下一篇: 数据库多表查询时,返回值该如何接收问题