日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring源码下载安装,导入idea以及编译报错问题详细解决过程

發(fā)布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring源码下载安装,导入idea以及编译报错问题详细解决过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考 《spring源碼深度解析 第2版》

一、spring源碼下載

github官網(wǎng)

github首頁搜索 “spring”

選擇 spring-projects/spring-framework

點擊 Branch master 選擇5.0.x


下載源碼 ZIP壓縮包
Clone or download -> Download ZIP

如果由于網(wǎng)絡(luò)問題下載不下來的話,下面是我上傳到網(wǎng)盤上的spring5.0.x源碼
網(wǎng)盤下載
鏈接:https://pan.baidu.com/s/1S5QCank16oX0Uy1l759EUQ
提取碼:qdjx

二、idea 導(dǎo)入源碼工程

解壓源碼后,idea File -> Open 打開源碼

Import Project from Gradle 工程屬性

導(dǎo)入idea后 如下:

重新編譯工程 Build -> Rebuild Project

報錯:

Error:Kotlin: [Internal Error] java.lang.IllegalStateException: The provided plugin org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar is not compatible with this version of compilerat org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:181)at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:117)at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:413)at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:276)at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:154)at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:63)at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:108)at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:52)at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:92)at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$1.invoke(CompileServiceImpl.kt:389)at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$1.invoke(CompileServiceImpl.kt:97)at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:909)at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:97)at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:939)at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:908)at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:387)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)at sun.rmi.transport.Transport$1.run(Transport.java:200)at sun.rmi.transport.Transport$1.run(Transport.java:197)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.Transport.serviceCall(Transport.java:196)at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.AbstractMethodError: org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar.registerProjectComponents(Lcom/intellij/mock/MockProject;Lorg/jetbrains/kotlin/config/CompilerConfiguration;)Vat org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:179)... 33 more

根據(jù)報錯信息
The provided plugin org.jetbrains.kotlin.scripting.compiler.plugin.Scripting
可以知道是 kotlin版本的問題
在idea 中 File -> Settings -> Plugins 搜索欄輸入 Kotlin, 點擊Update
注意:如果沒有顯示update ,稍等一會應(yīng)該會出現(xiàn),如果還不行,那就重啟下idea

更新完后 重啟idea

再次編譯工程 idea 中 Build -> Build Project
然后發(fā)現(xiàn)又報錯
Error:(30, 41) java: 找不到符號: 類 DefaultNamingPolicy ,Objenesis ,InstantiatorStrategy ,ObjectInstantiator ,ObjenesisException
具體如下:

E:\workspace_idea\spring-framework-5.0.x\spring-core\src\main\java\org\springframework\cglib\core\SpringNamingPolicy.java Error:(30, 41) java: 找不到符號符號: 類 DefaultNamingPolicy Error:(34, 9) java: 方法不會覆蓋或?qū)崿F(xiàn)超類型的方法 E:\workspace_idea\spring-framework-5.0.x\spring-core\src\main\java\org\springframework\objenesis\SpringObjenesis.java Error:(20, 50) java: 程序包org.springframework.objenesis.instantiator不存在 Error:(21, 46) java: 程序包org.springframework.objenesis.strategy不存在 Error:(22, 46) java: 程序包org.springframework.objenesis.strategy不存在 Error:(35, 41) java: 找不到符號符號: 類 Objenesis Error:(47, 23) java: 找不到符號符號: 類 InstantiatorStrategy位置: 類 org.springframework.objenesis.SpringObjenesis Error:(49, 60) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(68, 32) java: 找不到符號符號: 類 InstantiatorStrategy位置: 類 org.springframework.objenesis.SpringObjenesis Error:(110, 20) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(122, 23) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(69, 68) java: 找不到符號符號: 類 StdInstantiatorStrategy位置: 類 org.springframework.objenesis.SpringObjenesis Error:(111, 17) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(113, 25) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(119, 25) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(125, 25) java: 找不到符號符號: 類 ObjectInstantiator位置: 類 org.springframework.objenesis.SpringObjenesis Error:(131, 24) java: 找不到符號符號: 類 ObjenesisException位置: 類 org.springframework.objenesis.SpringObjenesis Error:(149, 35) java: 找不到符號符號: 類 ObjenesisException位置: 類 org.springframework.objenesis.SpringObjenesis

三、解決 cglib和objenesis的編譯錯誤

解決問題過程: (《Spring 源碼深度解析》中介紹的解決過程和下面的有一點不同,不過最終都是導(dǎo)入jar包 spring-objenesis-repack 和 spring-cglib-repack)
打開命令行控制臺 (注意:不要用idea的 Terminal ,我一直不成功)
Win + R 輸入cmd

切換工作目錄到 spring 源碼工程的根目錄下

執(zhí)行 gradle objenesisRepackJar 和 gradle cglibRepackJar
報錯: ‘gradle’ 不是內(nèi)部或外部命令,也不是可運行的程序

E:\workspace_idea\spring-framework-5.0.x>gradle objenesisRepackJar 'gradle' 不是內(nèi)部或外部命令,也不是可運行的程序 或批處理文件。

解決過程
在C盤的 用戶 目錄下 搜索 gradle


找到 所有版本的gradle 都在 C:\Users\Administrator.gradle\wrapper\dists

在idea 中 build.gradle文件中 找到 gradleversion ,可以看到版本是4.4.1

gradle 4.4.1 的執(zhí)行程序在
C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1\bin

創(chuàng)建系統(tǒng)環(huán)境變量
GRADLE_HOME=C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
然后在系統(tǒng)環(huán)境變量 Path 的最后添加上 ;%GRADLE_HOME%\bin
注意 別漏了符號 ;
具體操作過程 和添加 JAVA_HOME的過程一樣

簡略過程如下:
win7 電腦 -》計算機(jī) -》右鍵屬性 -》 環(huán)境變量 -》 高級系統(tǒng)設(shè)置 -》 環(huán)境變量 -》新建系統(tǒng)變量:GRADLE_HOME值為C:\Users\Administrator.gradle\wrapper\dists\gradle-4.4.1-bin\46gopw3g8i1v3zqqx4q949t2x\gradle-4.4.1
-》編輯系統(tǒng)變量Path 在最后面 增加;%GRADLE_HOME%\bin


重新 在操作系統(tǒng)的cmd命令行控制臺 (注意:不要用idea的 Terminal 中執(zhí)行g(shù)radle操作,我一直不成功,暫時沒有去找為什么會不成功),切換到spring源碼的工作目錄下面
執(zhí)行 gradle objenesisRepackJar 和 gradle cglibRepackJar

再次 idea 編譯源碼工程 Build -> Build Project
發(fā)現(xiàn)解決了上述編譯報錯問題:找不到符號: 類 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
打開 系統(tǒng)cmd 命令行 切換工作目錄到 下載的AspectJ 所在目錄
執(zhí)行 java -jar aspectj-1.9.0.jar

安裝過程中3個設(shè)置我都是默認(rèn)的 直接next(注意第二步要設(shè)置自己已經(jīng)安裝的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源碼,所以不用解決下面問題

E:\workspace_idea\spring-framework-5.0.x\spring-oxm\src\test\java\org\springframework\oxm\jaxb\Jaxb2UnmarshallerTests.java Error:(36, 41) java: 程序包org.springframework.oxm.jaxb.test不存在 Error:(37, 41) java: 程序包org.springframework.oxm.jaxb.test不存在 Error:(65, 17) java: 找不到符號符號: 類 Flights位置: 類 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests Error:(65, 36) java: 找不到符號符號: 類 Flights位置: 類 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests Error:(73, 17) java: 找不到符號符號: 類 FlightType位置: 類 org.springframework.oxm.jaxb.Jaxb2UnmarshallerTests

到此 spring 源碼下載安裝結(jié)束,可以開始源碼學(xué)習(xí)了!

總結(jié)

以上是生活随笔為你收集整理的spring源码下载安装,导入idea以及编译报错问题详细解决过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。