Eclipse 运行时选项

版本 3.1 - 最后修订于 2005 年 6 月 15 日

Eclipse 平台具有很高的可配置性。配置输入的形式为命令行自变量和系统属性设置。很多情况下,命令行自变量仅仅是用来设置相关系统属性的缩写。事实上,系统属性设置远多于命令行自变量。

命令行自变量

下面列示的是由 Eclipse 运行时的各个部分处理的命令行自变量。其中很多值也可以通过使用系统属性指定,即在命令行上使用 -D VM 自变量、在 config.ini 文件中指定它们的值或者使用 <launcher>.ini 文件。使用后两种技巧,可以在完全不使用命令行自变量的情况下定制 Eclipse。

对于列表中的每个自变量,已经给定了其对应系统属性关键字(在 {} 中)。另外还给定了处理命令行自变量的 Eclipse 运行时层(在 () 中)。这对于人们替换运行时部件以适应特殊需要很有用。

-application <id> (Runtime)
相当于将 eclipse.application 设置为 <id>
-arch <architecture> (OSGi)
相当于将 osgi.arch 设置为 <architecture>
-clean (OSGi)
相当于将 osgi.clean 设置为 "true"
-configuration <location> (Main)
相当于将 osgi.configuration.area 设置为 <location>
-console [port](OSGi)
相当于将 osgi.console 设置为 [port] 或在要使用缺省端口(例如,未指定端口时)时设置为空字符串。
-consoleLog (Runtime)
相当于将 eclipse.consoleLog 设置为 "true"
-data <location> (OSGi)
相当于将 osgi.instance.area 设置为 <location>
-debug [options file] (OSGi)
相当于将 osgi.debug 设置为 [options file] 或设置为空字符串以仅启用调试(例如,如果未指定选项文件位置)
-dev [entries] (OSGi)
相当于将 osgi.dev 设置为 [entries] 或设置为空字符串以仅启用 DEV 方式(例如,如果未指定条目)
-endSplash <command> (Main)
指定要用来关闭闪屏的命令。通常由 Eclipse 可执行文件提供。
-feature <feature id> (Runtime)
相当于将 eclipse.product 设置为 <feature id>
-framework <location> (Main)
相当于将 osgi.framework 设置为 <location>
-initialize (Main)
初始化要运行的配置。刷新与运行时相关的所有数据结构和高速缓存。不清除任何用户/插件定义的配置数据。没有运行任何应用程序,忽略所有产品规范且不显示用户界面(例如,不会绘制闪屏)
-install <location> (Main)
相当于将 osgi.install.area 设置为 <location>
-keyring <location> (Runtime)
权限数据库在磁盘上的位置。此自变量必须与 -password 自变量一起使用。
-name <string> NEW
当应用程序启动时要显示在任务栏中的名称。未设置此项时,名称是可执行文件的名称。
-nl <locale> (OSGi)
相当于将 osgi.nl 设置为 <locale>
-noExit (OSGi)
相当于将 osgi.noShutdown 设置为“true”
-noLazyRegistryCacheLoading (Runtime)
相当于将 eclipse.noLazyRegistryCacheLoading 设置为 "true"
-noRegistryCache (Runtime)
相当于将 eclipse.noRegistryCache 设置为 "true"
-noSplash (Executable, Main)
控制是否显示闪屏
-os <operating system>(OSGi)
相当于将 osgi.os 设置为 <operating system>
-password <password> (Runtime)
权限数据库的密码
-pluginCustomization <location> (Runtime)
相当于将 eclipse.pluginCustomization 设置为 <location>
-product <id> (OSGi)
相当于将 eclipse.product 设置为 <id>
-showSplash <command> (Main)
指定要用来显示闪屏的命令。通常由 Eclipse 可执行文件提供。
-startup <location> (Executable) NEW
用来启动 Eclipse 的 JAR 的位置。引用的 JAR 必须设置 Main-Class 属性。如果未设置此参数,则将使用位于同一个文件夹中的 startup.jar,而不是使用可执行文件。
-user <location> (OSGi)
相当于将 osgi.user.area 设置为 <location>
-vm <path to java executable> (Executable, Main)
传递给 Eclipse 可执行文件后,此选项用来查找用来运行 Eclipse 的 Java VM。必须是指向适当的 Java 可执行文件的完整文件系统路径。如果未指定,Eclipse 可执行文件将使用搜索算法来查找合适的 VM。不管怎样,可执行文件会使用 -vm 自变量将该路径传递至用于 Java Main 的实际 VM。然后,Java Main 将此值存储在 eclipse.vm 中。
-vmargs [vmargs*] (Executable, Main)
传递给 Eclipse 后,此选项用来定制运行 Eclipse 的 Java VM 的操作。如果指定了此操作,此选项必须位于命令行的末尾。即使未在可执行命令行上指定,可执行文件也将使用 -vmargs 自变量自动将相关自变量(包括正在启动的类)添加至传递到 Java 的命令行。然后,Java Main 将此值存储在 eclipse.vmargs 中。
-ws <window system> (OSGi)
相当于将 osgi.ws 设置为 <window system>

废弃的命令行自变量

下列命令行自变量不再相关或已被取代,并由运行时占用而不传递至为保留向后兼容性而运行的应用程序。

-boot
请参阅 -configuration
-classLoaderProperties
不再相关
-firstUse
不再相关
-newUpdates
不再相关
-noPackagePrefixes
不再相关
-noUpdate
不再相关
-plugins
不再相关
-update
不再相关

其它

下列命令行自变量是由各个 Eclipse 插件定义的,且仅当安装、解析并激活定义插件后才受支持。

-noVersionCheck (workbench)
<description>
-perspective (workbench)
<description>
-refresh (org.eclipse.core.resources)
<description>
-showLocation (org.eclipse.ui.ide.workbench)
<description>
-allowDeadlock
<description>

系统属性

Eclipse 运行时使用下列系统属性。注意,以“osgi”开头的属性是特定于 OSGi 框架实现的,而以“eclipse”开头的属性则特定于位于 OSGi 框架之上的 Eclipse 运行时。

其中许多属性具有命令行等效项(请参阅命令行自变量一节以及花括号 {} 中的值)。用户可任意选用命令行或属性设置来指定值。可以下列方式设置属性:

eclipse.application {-application}
要运行的应用程序的标识。此处给定的值覆盖由要运行的产品(请参阅 eclipse.product)定义的任何应用程序。
eclipse.commands
启动 Eclipse 时传递的所有命令行自变量的换行分隔列表
eclipse.consoleLog
如果为“true”,还将任何日志输出发送至 Java 的 System.out(通常会返回至命令 shell)。与 -debug 组合时很方便。
eclipse.debug.startupTime
启动用于此会话的 Java VM 的时间(以毫秒计)
eclipse.exitcode
<description>
eclipse.exitdata
<description>
eclipse.log.backup.max
要允许的最大备份日志文件数。作为循环使用日志文件的结果,在达到最大备份日志文件数之后,将删除最旧的备份日志文件。缺省值是“10”。负数值或零值将导致使用缺省值。
eclipse.log.size.max
允许日志文件增大到的最大大小(以 Kb 计)。当文件大小超出最大大小时,将循环使用日志文件。缺省值是“1000”。负数值将导致使用缺省值。零值表示没有最大日志大小。
eclipse.noExtensionMunging
如果为“true”,旧注册表扩展将保持原样。缺省情况下,将更新这些扩展以使用 Eclipse 3.0 中的新扩展点标识。
eclipse.noLazyRegistryCacheLoading {-noLazyRegistryCacheLoading}
如果为“true”,将释放平台的插件注册表高速缓存装入优化。缺省情况下,仅在需要时才从注册表高速缓存(如果有)装入配置元素,从而减少内存占用量。此选项在启动时强制完全装入注册表高速缓存。
eclipse.noRegistryCache {-noRegistryCache}
如果为“true”,则不会读写内部扩展注册表高速缓存
eclipse.pluginCustomization {-pluginCustomization}
包含插件首选项的缺省设置的属性文件的文件系统位置。这些缺省设置覆盖在主要功能部件中指定的缺省设置。相对路径是相对于 Eclipse 本身的当前工作目录解释的。
eclipse.product {-product}
要运行的产品的标识。它控制各种品牌信息以及使用的应用程序。
eclipse.startTime
此属性是在 Eclipse 启动时设置的。此属性的值是 System.currentTimeMillis() 返回的值的字符串表示。用户不应该设置此值。
eclipse.vm {-vm}
指向用来运行 Eclipse 的 Java 可执行文件的路径。此信息用来构造重新启动命令行。
eclipse.vmargs {-vmargs}
列示用来运行 Eclipse 的 VM 自变量。此信息用来构造重新启动命令行。
osgi.adaptor
要使用的 OSGi 框架适配器的类名。
osgi.arch {-arch}
请参阅 -arch
osgi.baseConfiguration.area
指定当未指定 osgi.configuration.area 时要使用的基本配置。
osgi.bundles
用逗号分隔的 bundle 列表,它们是自动安装的,在系统启动并运行后可选择启动它们。每个条目的格式是:
    <URL | simple bundle location>[@ [<start-level>] [":start"]]
如果省略启动级别(大于零的整数),则框架将对 bundle 使用缺省启动级别。如果添加了“start”标记,则在安装后,会将 bundle 标记为已启动。简单 bundle 位置是相对于框架的父目录解释的。启动级别指示 bundle 应该运行于的 OSGi 启动级别。如果未设置此值,系统将计算适当的缺省值。
osgi.clean
如果设置为 "true",则 OSGi 框架和 eclipse 运行时所用的任何高速缓存的数据将被全部擦去。这将清理用来存储 bundle 从属项资源和 eclipse 扩展注册数据的高速缓存。使用此选项将强制 eclipse 重新初始化这些高速缓存。
osgi.configuration.cascaded
如果设置为“true”,将把此配置层叠至父代配置。父配置是由 osgi.sharedConfiguration.area 指定的。有关详细信息,请参阅有关位置的一节。
osgi.configuration.area {-configuration}
此次平台运行的配置位置。配置决定哪些插件将运行以及其它各项系统设置。有关详细信息,请参阅有关位置的一节。
osgi.configuration.area.default
此次平台运行的缺省配置位置。配置决定哪些插件将运行以及其它各项系统设置。仅当未对 osgi.configuration.area 设置任何值时才使用此值(即,缺省设置)。有关详细信息,请参阅有关位置的一节。
osgi.console {-console}
如果设置为非空值,则将启用 OSGi 控制台(如果安装了)。如果该值是合适的整数,将把它解释为端口,控制台在该端口上侦听其输出并引导至给定端口。便于调查系统的状态。
osgi.console.class
要运行的控制台的类名(如果已请求)
osgi.debug {-debug}
如果设置为非空值,平台将置于调试方式。如果此值是字符串,则将它解释为 .options 文件的位置。此文件指示哪些调试点可供插件使用以及是否启用了它们。如果未指定位置,平台将在安装目录下搜索 .options 文件。
osgi.dev {-dev}
如果设置为空字符串,就会打开 DEV 方式。还可将此属性设置为用逗号分隔的将添加至每个插件的类路径的类路径条目或设置为 指向包含一组插件的定制类路径添加项的 Java 属性文件的 URL。对于要求定制的 DEV 时间类路径的每个插件,该文件都将包含以下格式的条目:
    <插件标识>=<用逗号分隔的要添加的类路径条目的列表>
其中,如果没有其它说明,插件标识“*”与所有插件匹配。
osgi.framework
OSGi 框架的 URL 位置。当 Eclipse 安装中断时很有用。有关详细信息,请参阅有关位置的一节。
osgi.frameworkClassPath
用逗号分隔的用于 OSGi 框架实现的类路径条目的列表。相对位置是相对于框架位置解释的(请参阅 osgi.framework
osgi.framework.extensions
逗号分隔的框架扩展列表。每个条目的格式是:
    <URL | simple bundle location>
如果指定了简单 bundle 位置(不是 URL),则将在 org.eclipse.osgi bundle 的父目录中执行搜索。可以使用框架扩展来通过另一个框架适配器运行 Eclipse。框架扩展可以包含一个 eclipse.properties 文件来设置系统属性。例如,提供了框架适配器实现的框架扩展可以通过设置 osgi.adaptor 属性来指定适配器类。
osgi.framework.shape
设置为 Eclipse OSGi Framework 实现的形状。此属性是在 Eclipse 平台启动时设置的,用户不应该设置此属性。值“jar”表示 Eclipse OSGi Framework 包含在单个 jar 中。值“folder”表示 Eclipse OSGi Framework 包含在目录中。
osgi.java.profile
要使用的 JRE 概要文件的 URL。JRE 概要文件包含 org.osgi.framework.system.packages 和 org.osgi.framework.bootdelegation 属性的值。如果未设置 osgi.java.profile,则将根据正在运行的 JRE 的 java.specification.version 值选择概要文件。
osgi.java.profile.bootdelegation
Java 概要文件 osgi.java.profile 可以包含“org.osgi.framework.bootdelegation”属性。可以设置此值以设置系统属性“org.osgi.framework.bootdelegation”。osgi.java.profile.bootdelegation 指示了要使用的 bootdelegation 的策略。下列值有效(缺省值是 ignore):
osgi.install.area {-install}
平台的安装位置。此设置指示基本 Eclipse 插件的位置,在 Eclipse 安装中断时很有用。有关详细信息,请参阅有关位置的一节。
osgi.instance.area {-data}
此会话的实例数据位置。插件使用此位置来存储它们的数据。例如,资源插件使用这个作为项目的缺省位置(aka 工作空间)。有关详细信息,请参阅有关位置的一节。
osgi.instance.area.default
此会话的缺省实例数据位置。插件使用此位置来存储它们的数据。例如,资源插件使用这个作为项目的缺省位置(aka 工作空间)。仅当未对 osgi.instance.area 设置任何值时才使用此值(即,缺省设置)。有关详细信息,请参阅有关位置的一节。
osgi.locking
用于平台的本次运行的锁定类型。有效锁定类型是“java.io”、“java.nio”和“none”。缺省值是“java.nio”,如果 JRE 不支持“java.nio”,则缺省值是“java.io”。
osgi.manifest.cache
发现和生成的清单的位置。缺省位置在配置区域中,但清单高速缓存可以单独存储。
osgi.nl {-nl}
Eclipse 平台将在其上运行的语言环境的名称。NL 值应遵循标准 Java 语言环境命名约定。
osgi.noShutdown {-noExit}
如果为“true”,则在 Eclipse 应用程序结束后,VM 不退出。这对于在 Eclipse 应用程序结束后检查 OSGi 框架来说非常有用。
osgi.os {-os}
操作系统值。该值应为 Eclipse 已知的 Eclipse 处理器体系结构名称之一(例如,x86 和 sparc 等等)。
osgi.parentClassLoader
用作框架中安装的所有 bundle 的父类装入器的类装入器类型。有效类型如下所示:
osgi.requiredJavaVersion
启动 Eclipse 所需的最低 Java 版本。缺省值是“1.4.1”。
osgi.resolverMode
用来解析框架中安装的 bundle 的方式。值“strict”将使解析器处于严格方式。缺省解析器方式是不严格。当解析器处于严格方式时,框架将在从已导出的指定了 x-internal 或 x-friends 伪指令的包中装入类和资源时强制执行访问限制规则。
osgi.sharedConfiguration.area
用于平台的本次运行的共享配置位置。如果 osgi.configuration.cascaded 属性设置为“true”,则将共享配置区域用作父配置。
osgi.splashLocation
启动 Eclipse 时要显示的闪屏(.bmp 文件)的绝对 URL 位置。此属性覆盖 osgi.splashPath 中设置的任何值。
osgi.splashPath
用逗号分隔的用来搜索名为 splash.bmp 的文件的 URL 的列表。此属性被在 osgi.splashLocation 中设置的任何值覆盖。
osgi.syspath
设置为 Eclipse OSGi Framework(org.eclipse.osgi)实现的所在路径。例如“<eclipse install path>/eclipse/plugins”。此属性是在 Eclipse 平台启动时设置的,用户不应该设置此属性。
osgi.user.area {-user}
用户区域的位置。用户区域包含特定于操作系统用户而且独立于任何 Eclipse 安装、配置或实例的数据(例如,首选项)。有关详细信息,请参阅有关位置的一节。
osgi.user.area.default
用户区域的缺省位置。用户区域包含特定于操作系统用户而且独立于任何 Eclipse 安装、配置或实例的数据(例如,首选项)。仅当未对 osgi.user.area 设置任何值时才使用此值(即,缺省设置)。有关详细信息,请参阅有关位置的一节。
osgi.ws {-ws}
窗口系统值。该值应为 Eclipse 已知的 Eclipse 窗口系统名称之一(例如,win32 和 motif 等等)。

位置

Eclipse 运行时定义一些位置,给插件开发者提供读取/存储数据的上下文并使 Eclipse 用户能控制数据共享作用域和可视性。Eclipse 定义下列位置概念:

User (-user) {osgi.user.area} [@none, @noDefault, @user.home, @user.dir, filepath, url]
顾名思义,用户位置是特定于用户的。通常,用户位置是基于 Java user.home 系统属性的值,但是,可覆盖此值。在用户位置中可找到诸如用户范围的首选项和登录信息之类的信息。
Install (-install) {osgi.install.area} [@user.home, @user.dir, filepath, url]
安装位置是安装 Eclipse 本身的地方。实际上此位置是要运行 startup.jar 或 eclipse.exe 的父代的目录(通常为“eclipse”)。对于普通用户,应将此位置视为只读,因为安装可由许多用户共享。可设置安装位置并从 Eclipse 的其余部分对 startup.jar 去耦。
Configuration (-configuration) {osgi.configuration.area} [@none, @noDefault, @user.home, @user.dir, filepath, url]
配置位置包含标识和管理要运行的安装的(子)集的文件。这样,每个安装可能会有许多配置。安装可能附带缺省配置区域,但通常的启动方案涉及查找可写度更高的配置位置的运行时尝试。
Instance (-data) {osgi.instance.area} [@none, @noDefault, @user.home, @user.dir, filepath, url]
包含用户定义的数据工件的实例位置。例如,资源插件使用实例区域作为工作空间位置,因此它是项目的缺省主目录。其它插件可在此位置中随意写下任何文件。

虽然用户可以设置这些位置当中的任何一个,但是如果没有给定值,Eclipse 将计算出合理的缺省值。设置位置最常见的用例就是实例区域或工作空间(在 IDE 环境中)。要对特定数据集运行缺省 Eclipse 配置,可指定:

    eclipse -data c:\mydata

更多详细信息

位置是一些 URL。为简单起见,也接受文件路径并且它们将自动转换为 file: URL。为更好地控制以及更方便起见,还有一些可以使用的预定义符号位置。注意,并非位置类型和符号值的所有组合都有效。下表详细说明了哪些组合是可能的。由于缺省用例用于要设置的所有位置,而且它是有效且可写的,因此有些插件在其它设置中可能会失效,即使它们被列示为可行也是如此。例如,如果未定义实例区域,期望重点放在用户数据上的插件(例如,Eclipse 资源插件)来完成许多任务是不合理的。将由插件开发者来选择他们支持的设置并相应地设计它们的功能。

@none
指示不应显式设置相应位置或设置为其缺省值。例如,没有用户数据的 RCP 样式应用程序可以使用 osgi.instance.area=@none 来防止将外来文件写入磁盘。@none 后面不能跟任何其它路径段。
@noDefault
强制取消位置的定义或显式定义位置(即,Eclipse 不会自动计算缺省值)。这在您想在相应的位置允许数据但 Eclipse 缺省值不合适的时候很有用。@noDefault 后面不能跟任何其它路径段。
@user.home
引导 Eclipse 计算相对于用户的主目录的位置值。@user.home 后面可跟其它路径段。在所有情况下,字符串“@user.home”仅被替换为 Java“user.home”系统属性的值。例如,设置
    osgi.instance.area=@user.home/myWorkspace
将导致值
    file:/users/bob/myWorkspace
@user.dir
引导 Eclipse 计算相对于当前工作目录的位置值。@user.dir 后面可跟其它路径段。在所有情况下,字符串“@user.dir”仅被替换为 Java“user.dir”系统属性的值。例如,设置
    osgi.instance.area=@user.dir/myWorkspace
将导致值
    file:/usr/share/eclipse/myWorkspace
位置/值
支持缺省值
文件/URL
@none
@noDefault
@user.home
@user.dir
实例
是(缺省值)
配置
是*
是*
安装
用户

* 指示此设置是在技术上可行但实际操作时很难管理。特别是在没有配置位置的情况下,Eclipse 运行时可能只能启动 OSGi 框架而已。

只读位置

通过对 location 属性追加“.readOnly”并将其设置为“true”值,可以将一个位置指定为只读位置。可以使用下列属性来将它们的相应位置指定为只读位置:

启动程序 ini 文件

现在,eclipse.exe 以及 RCP 应用程序的更通用可执行程序从相关联的 ini 文件中读取它们的参数。此文件提供了一种独立于平台的方法来传递先前必须直接在命令行上指定的自变量,例如 vm 或 vm 自变量。虽然可以在此文件中指定所有参数,但为了便于维护以及跨各种安装保持一致性,建议在此 ini 文件中只指定 vm 位置和 vm 自变量并使用 config.ini 文件来指定其它自变量。

文件格式

必须使用可执行文件名来命名此文件(例如,eclipse.exe 将读取 eclipse.ini,launcher.exe 将读取 launcher.ini),文件中指定的每个参数都必须单独占用一行。以下是此类文件的一个示例,它指定了 vm 位置和一些参数:

-vm
c:/myVm/java.exe
-vmargs
-Dms40M