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    表示当前类加载器

  • 相关阅读:
    2019.10.11CSS
    2019.10.11 THML
    虚拟机FAQ
    thinkpad安装虚拟机 开启虚拟功能要在bios的security里面设置
    JDK在windows系统下环境变量的设置
    有关operamasks-ui的一些信息汇总
    从用List给ArrayList赋值看容器的传值,最好用.addAll
    给eclipse安装svn插件
    Java接口 枚举型Enumeration
    linux下的grep命令
  • 原文地址:https://www.cnblogs.com/fengpeng/p/4628378.html
Copyright © 2011-2022 走看看