zoukankan      html  css  js  c++  java
  • Spring源码分析——调试环境搭建(可能是最省事的构建方法)

    1. 依赖工具

    • idea
    • git
    • jdk 1.8 +
    • Gradle

    2. 获取源码

      从github https://github.com/spring-projects/spring-framework 上 Fork 出属于自己的仓库。如果懒得这么做也可以直接Clone or download下载源码包。

    3.使用IDEA编译源码

      首先打开IDEA,点击File —> Open 选择刚才源码的下载路径进行导入

       

       

       点击“ok”按钮会弹出以下配置框,主要是配置JDK位置,和Global位置(如果没有下载idea会自动帮你装配Global)

       

       点击确认后,就会打开Spring 源码,idea下面会显示正在导入包中(导包过程很慢请耐心等待)

         

         所有关联包导入完毕后需要Build下项目,导入项目完成(如图操作)

         

    4.运行调试

      经过上面的步骤之后基本上就可以直接运行 spring 的 Testcase 了  可以先选择调试 “XmlBeanDefinitionReaderTests” 类(作用: 解析 XML 配置文件成对应的 BeanDefinition 们的流程)。有可能会遇到如下的错

    Error:Kotlin: [Internal Error] java.lang.AbstractMethodError: org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar.registerProjectComponents(Lcom/intellij/mock/MockProject;Lorg/jetbrains/kotlin/config/CompilerConfiguration;)V
    	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:173)
    	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:114)
    	at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:401)
    	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createCoreEnvironment(K2JVMCompiler.kt:282)
    	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.createEnvironmentWithScriptingSupport(K2JVMCompiler.kt:272)
    	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:151)
    	at org.jetbrains.kotlin.cli.jvm.K2JVMCompiler.doExecute(K2JVMCompiler.kt:61)
    	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:107)
    	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.java:51)
    	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:380)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl$compile$$inlined$ifAlive$lambda$1.invoke(CompileServiceImpl.kt:96)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:892)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl$doCompile$$inlined$ifAlive$lambda$2.invoke(CompileServiceImpl.kt:96)
    	at org.jetbrains.kotlin.daemon.common.DummyProfiler.withMeasure(PerfUtils.kt:137)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl.checkedCompile(CompileServiceImpl.kt:919)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl.doCompile(CompileServiceImpl.kt:891)
    	at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:378)
    	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:346)
    	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:568)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    

       这个主要是Kotlin插件的版本问题,解决方案是更新新版本的Kotlin插件。贴个链接:IntelliJ IDEA手动更新Kotlin.

    5.可能遇到的错

       遇到 InstrumentationSavingAgent 不存在的错误  需要将 spring-context.gradle 修改如下:

         

       遇到 Objenesis找不到,则需要操作上面的build项目即可(最新版本,bulid后此包就会下载下来。如果是老版本有可能需要手动添加)

        

    这些观点只代表自己观点,本人写的东西只是自己在工作或者生活中遇到的问题和大家分享一下,方便自己和大家的查阅,目前博客主要更新两大类。在用微服务中遇到的问题,技术的整理和数据库优化方面。以后还会增加其他板块。如有错误的地方请联系博主会及时更正。
  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/Caucasian/p/9917891.html
Copyright © 2011-2022 走看看