`

Eclipse的Platform协议及其它

阅读更多

除常见的Http、FTP、FILE等协议之外,eclipse平台还支持多种扩展协议,甚至可以支持用户自定义协议。

Eclipse平台支持的协议,包括Plugin、Fragment、Meta、Config等,会在Eclipse runtime启动时候注册,可参见:

(1)org.eclipse.core.internal.runtime.Activator

(2)org.eclipse.core.internal.boot.PlatformURLHandler

(3)PlatformURLConnection

(4)URLConnection

从上述(3)的继承实现上,可以看到,Eclipse对platform协议url的定位的支持情况如下:

  1. platform:base/xxx, 相对于rcp根目录下的资源

  2. platform:config/xxx, 相对于rcp的configuration目录下的资源

  3. platform:fragment/foo.bar/xxx, 相对于foo.bar这个fragment下的资源

  4. platform:meta/foo.bar/xxx, 相对于workspace/.metadata/.plugins/foo.bar目录下的资源

  5. platform:plugin/foo.bar/xxx, 相对于foo.bar这个plugin下的资源

  6. platform:resource/foo/xxx, 相对于workspace里foo工程下的资源, foo工程有可能在workspace目录之外.

也可以通过继承PlatformURLConnection类,定义自己的基于Platform的URL。

从根本上来说,这种便利性是由Java URLConnection 乃至关于URL的标准的可扩展性带来的,Eclipse平台只是有效地利用了这种可扩展性。类似的情况还有OSGI的Bundle协议和Java的Jar协议等。

在实际的插件开发中,常用以下方法给文件定位

    1  在插件内定位:

        Bundle bundle = MapEditorPlugin.getDefault().getBundle();
        URL url = bundle.getEntry("temp/xxx");

        这种方式表示 xxx  这个文件在本插件的temp目录下

    2  在RCP的配置路径下:

        URL url = new URL("platform:config/xxx");
        Properties prop  = new Properties() ;
        prop.load(url.openStream());

        这种方式表示xxx这个文件在你的rcp的工作目录下的configuration目录下

另外,应该善加利用Platform里的方法,如调用Platform.getConfigurationLocation()也可获得配置目录的Location,通过location可以getURL()。

 

转自: http://blog.csdn.net/alpineflame/article/details/1756026

分享到:
评论

相关推荐

    java开源包3

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    微同商城-其他

    使用eclipse启动项目后默认访问路径 http://localhost:8080/platform-framework 使用idea启动项目后默认访问路径 http://localhost:8080 使用须知: 允许 个人学习使用 允许用于学习、毕设等 允许进行商业使用,请...

    java开源包1

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包11

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包2

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包6

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包5

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包10

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包4

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包8

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包7

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包9

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    java开源包101

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    Java资源包01

    jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在...

Global site tag (gtag.js) - Google Analytics