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

  • 相关阅读:
    python 中的 用chr()数值转化为字符串,字符转化为数值ord(s)函数
    如何使用Python-GnuPG和Python3 实现数据的解密和加密
    “瑞士军刀”Netcat使用方法总结
    pyppeteer模块的基本使用
    js加密数据爬取
    requests 返回 521
    Spring注解配置定时任务<task:annotation-driven/>
    java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    tomcat同个端口配置多个项目后无后缀的页面跳转
    java中将jsonObject字符串转化为Map对象
  • 原文地址:https://www.cnblogs.com/fengpeng/p/4628378.html
Copyright © 2011-2022 走看看