一尘不染

为什么Eclipse使用本机启动器?

java

Eclipse IDE是用Java编写的大型桌面应用程序的最佳示例之一。

我见过的大多数Java应用程序通常都依赖于批处理或Shell脚本来使用应用程序的类路径构建字符串,并使用类路径作为env变量启动JVM。

另一方面,Eclipse依赖于本机启动器。这是为什么 ?该启动程序没有脚本执行什么操作?

我记得一年半前读过一篇文章,该文章解释说“我们最好使用本地启动器”,但id并不能解释启动器的内部工作原理。


阅读 248

收藏
2020-12-03

共1个答案

一尘不染

春分发射使用JNI来启动Java虚拟机在同一进程的启动。使用JNI还允许我们在初始屏幕中使用SWT小部件。


实际上,您仍然可以拥有一个脚本,因为启动程序可执行文件eclipse.exe从3.3M5开始已被分成两部分:

  • 可执行文件,以及
  • 共享库(例如:eclipse_1006.dll)。

该可执行文件位于Eclipse安装的根目录中。
共享库org.eclise.equinox.launcher.[config]位于plugins目录中特定于平台的片段中。

将大多数启动器代码移到一个片段中的共享库中,这意味着一部分启动代码现在可以从更新站点进行更新。另外,从Java启动时,可以通过JNI加载共享库以显示启动屏幕。

如此处所述,您可以在没有本地启动器的情况下启动Eclipse
3.3

java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070319.jar

请注意,jar文件的名称现在与版本有关,这会导致天真脚本(使用确切的文件名调用jar)在jar文件更新后中断。

相反,您可能需要查找匹配的文件org.eclipse.equinox_*.jar。幸运的是,Eclipse-
wiki包含适当的脚本模板,这些模板在这种情况下很有用。
如果要避免修改现有脚本,还可以搜索Equinox Launcher插件,将其复制到Eclipse主目录中,然后将副本重命名为startup.jar。

2020-12-03