Eclipse该 IDE 是用 Java 编写的大型桌面应用程序的最佳示例之一。
我见过的大多数 Java 应用程序通常依赖于批处理或 shell 脚本来构建包含应用程序类路径的字符串,并使用类路径作为环境变量启动 JVM。
另一方面,Eclipse 依赖于本地启动器。这是为什么 ?这个启动器有哪些脚本没有的功能?
我记得大约一年半前读过一篇文章,其中解释说“我们最好使用原生启动器”,但 id 并没有解释启动器的内部工作原理。
最佳答案
Equinox launcher使用 JNI 在与启动器相同的进程中启动 Java VM。使用 JNI 还允许我们在初始屏幕中使用 SWT 小部件。
实际上,您仍然可以拥有一个脚本,因为启动器可执行文件 eclipse.exe 自 3.3M5 以来已分为两部分:
- 可执行文件,以及
- 共享库(例如:eclipse_1006.dll)。
可执行文件位于 eclipse 安装的根目录中。
共享库位于插件目录中的平台特定片段 org.eclise.equinox.launcher.[config]
中。
将大部分启动器代码移动到位于片段中的共享库中意味着这部分启动代码现在可以从更新站点进行更新。此外,当从 java 启动时,可以通过 JNI 加载共享库以显示启动画面。
如此处所述,您可以 start Eclipse 3.3 without the native launcher ,
java -jar plugins/org.eclipse.equinox.launcher_1.0.0.v20070319.jar
请注意,jar 文件的名称现在是依赖于版本的,这会导致使用确切文件名调用 jar 的原始脚本在 jar 文件更新后中断。
相反,您可能想要查找与 org.eclipse.equinox_*.jar
匹配的文件。谢天谢地,Eclipse-wiki 包含 appropriate scripting templates在这种情况下很有用。
如果不想修改现有脚本,也可以搜索Equinox Launcher插件,复制到Eclipse主目录下,重命名为startup.jar。
关于java - 为什么 Eclipse 使用 native 启动器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479558/