读源码学习equinox启动参数一

 

 

eclipse 3.3使用的是遵循 OSGi 标准的 equinox 实现。
equinox在启动的时候,在处理参数的时候分为几个阶段。
这里首先介绍第一个阶段的三个参数:

1、eclipse.startTime

启动时间,默认取系统的时间。

2、osgi.noShutdown
PROP_NOSHUTDOWN 对应的值就是 osgi.noShutdown

如果值为"true",当eclipse应用程序停止时,Java虚拟机并不退出。这在eclipse应用停止后检查OSGi框架非常有帮助。默认的值为"true"。

3、osgi.compatibility.bootdelegation
OSGI_COMPATIBILITY_BOOTDELEGATION 对应的值是 osgi.compatibility.bootdelegation

如果该参数值为"true",当一个类或资源查找不到时,类加载器会启动父类加载器进行最后的查找。(equinox类加载机制在后面会特别的介绍)
默认的值为"false"。

这些参数被保存在FrameworkProperties.java类中,这个类中的方法全都是静态方法,被用来保存全局的属性.

另外,还有一个非常有意思的参数,经常看到但从来没关注过  :)
在查看源代码的时候,有一个标识:$NON-NLS-1$ 作为注释出现在某些语句后面
在网上查了一下,解释如下:

The string $NON-NLS-1$ is a hint for both the compiler and the Externalization wizard that the first character string on this line is a tag or keyword of some sort and should not be localized. 也就是说$NON-NLS-1$表明本行的第一个string型变量是一个标签或者关键字,不需要被本地化。
部分代码如下:
if  (FrameworkProperties.getProperty( " eclipse.startTime " ==   null // $NON-NLS-1$
       FrameworkProperties.setProperty( " eclipse.startTime " , Long.toString(System.currentTimeMillis()));  // $NON-NLS-1$
if  (FrameworkProperties.getProperty(PROP_NOSHUTDOWN)  ==   null )
       FrameworkProperties.setProperty(PROP_NOSHUTDOWN, 
" true " );  // $NON-NLS-1$
if  (FrameworkProperties.getProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION)  ==   null )
       FrameworkProperties.setProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION, 
" false " );  // $NON-NLS-1$

 

全部代码:

http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java?revision=1.155&view=markup

你可能感兴趣的:(eclipse,String,osgi,compiler,wizard,osgi框架)