zoukankan      html  css  js  c++  java
  • Eclipse启动之三 : 启动器插件(百度空间迁移)

    Eclipse启动之三启动器插件

    • 空间
     

    启动插件名为org.eclipse.equinox.launcher.<version>,入口类org.eclipse.core.launcher.main.它是Eclipse虚拟机启动的最早的插件

    main整体流程:

    1.处理命令行参数

    2.设置虚拟机属性

    3.处理配置

    4.获取安装路径

    5.获取启动路径

    6.加载JNI动态库

    7.设置安全属性

    8.处理闪屏

    9.启动Eclipse核心框架

    1.处理命令行参数           解析命令行参数

    -showsplash            定位闪屏文件参数

    -vmargs                  java虚拟机参数

    -nl                           本地语言设置                     对应系统属性osgi.nl

    -vm                        定位java虚拟机参数

    --launcher.library    外壳程序动态库路径

    -launcher                launcher程序所在位置

    -startup                  startup.jar所在的位置

    -name                    启动程序所用的名字            对应系统属性eclipse.launcher.name

    -exitdata                退出数据

    -configuration        配置文件位置                       对应系统属性osgi.configuration.area

    -install                    安装路径                              对应系统属性osgi.install.area

    2.设置虚拟机属性           将解析的虚拟机参数设置到系统属性中

    系统属性eclipse.vm                       来源于参数-vm

    系统属性eclipse.vmargs                来源于参数-vmargs

    系统属性eclipse.commands           来源于整个命令行

    3.处理配置文件

    定位配置文件config.ini算法:

    1.读取系统属性osgi.configuration.area

    2.如果第一步未找到则读取系统属性osgi.baseConfiguration.area

    3.读取osgi.configuration.cascaded属性 如果属性值为true,表示需要级联的配置文件,则读取读取系统属性osgi.sharedConfiguration.area

    4.如果第三步中未找到配置文件,则在安装路径下/configuration目录中定位

    5.将配置文件中的属性合并到系统属性中

    6.读取系统属性osgi.framework,其值为启动路径

    8.处理闪屏          显示闪屏窗口

    定位闪屏图标splash.bmp的算法

    1.读取系统属性osgi.splashLocation

    2.如果第一步中未找到,则读取osgi.splashPath属性.一般此属性在配置文件中指定

    此步中保存了2个系统属性

    org.eclipse.equinox.launcher.splash.handle    闪屏窗口的句柄

    org.eclipse.equinox.launcher.splash.location  闪屏图标的位置

    9.启动Eclipse核心插件           创建URL类加载器,并调用org.eclipse.core.runtime.adaptor.EcluipseStarter的run方法

    其中通过系统属性osgi.parentClassLoader 或者osgi.frameworkparentClassLoader指定URL类加载器的父加载器,从而决定了程序可访问的类范围

    未指定的话,父类加载器为BootStrapClassLoader.

    属性值 boot       表示BootStrapClassLoader

    属性值app         表示 SystemClassLoader

    属性值ext          表示ExtensionClassLoader

    属性值Current    表示当前类加载器

  • 相关阅读:
    LeetCode 485. Max Consecutive Ones
    LeetCode 367. Valid Perfect Square
    LeetCode 375. Guess Number Higher or Lower II
    LeetCode 374. Guess Number Higher or Lower
    LeetCode Word Pattern II
    LeetCode Arranging Coins
    LeetCode 422. Valid Word Square
    Session 共享
    java NIO
    非阻塞IO
  • 原文地址:https://www.cnblogs.com/fengpeng/p/4628378.html
Copyright © 2011-2022 走看看