`
hiwings
  • 浏览: 60155 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

RCP的文件路径

阅读更多

长久以来一直为RCP的文件路径获取在IDE环境时和产品发布时不同苦恼不已,今天终于可以宣布已经fix了这个难题。 
检测报告如下:
在 eclipse中运行时得到的路径结果:
Platform.getLocation().toString():E:/Eclipse/runtime-operationtool.product
Platform.getProduct().getDefiningBundle().getLocation():initial@reference:E:/Eclipse/workspace/operationtool/
Activator.getDefault().getBundle().getLocation():initial@reference:E:/Eclipse/workspace/operationtool/
Platform.getLogFileLocation():E:/Eclipse/runtime-operationtool.product/.data/.log
Platform.getInstallLocation():/D:/Program Files/eclipse/
Platform.getStateLocation(Activator.getDefault().getBundle()):E:/Eclipse/runtime-operationtool.product/.data/.plugins/operationtool
Platform.getUserLocation():/C:/Documents and Settings/Allen/user/
Platform.getInstanceLocation():/E:/Eclipse/runtime-operationtool.product/
Platform.getConfigurationLocation():/E:/Eclipse/workspace/.data/.plugins/org.eclipse.pde.core/operationtool.product/ 
在发布后运行时得到的路径结果,operationtool_1.0.0.jar未解压:
Platform.getLocation().toString():E:/product/tool/workspace
Platform.getProduct().getDefiningBundle().getLocation():initial@reference:plugins/operationtool_1.0.0.jar/
Activator.getDefault().getBundle().getLocation():initial@reference:plugins/operationtool_1.0.0.jar/
Platform.getLogFileLocation():E:/product/tool/workspace/.data/.log
Platform.getInstallLocation():/E:/product/tool/
Platform.getStateLocation(Activator.getDefault().getBundle()):E:/product/tool/workspace/.data/.plugins/operationtool
Platform.getUserLocation():/C:/Documents and Settings/Allen/user/
Platform.getInstanceLocation():/E:/product/tool/workspace/
Platform.getConfigurationLocation():/E:/product/tool/configuration/

 在发布后运行时得到的路径结果,operationtool_1.0.0.jar已解压,并删除 operationtool_1.0.0.jar:
Platform.getLocation().toString():E:/product/tool/workspace
Platform.getProduct().getDefiningBundle().getLocation():initial@reference:plugins/operationtool_1.0.0/
Activator.getDefault().getBundle().getLocation():initial@reference:plugins/operationtool_1.0.0/
Platform.getLogFileLocation():E:/product/tool/workspace/.data/.log
Platform.getInstallLocation():/E:/product/tool/
Platform.getStateLocation(Activator.getDefault().getBundle()):E:/product/tool/workspace/.data/.plugins/operationtool
Platform.getUserLocation():/C:/Documents and Settings/Allen/user/
Platform.getInstanceLocation():/E:/product/tool/workspace/
Platform.getConfigurationLocation():/E:/product/tool/configuration/

通过对检测报告分析,得出以下有用的几个API的结论:
1.product的根目录获取:
未发布前:
Activator.getDefault().getBundle().getLocation(), 截去掉 initial@reference:file :后使用,比如:E:/Eclipse/workspace/operationtool/
发布后:
Platform.getInstallLocation() ,比如:E:/product/tool/ 
2.自己定制的plugin目录的获取:
发布后:
Activator.getDefault().getBundle().getLocation(), 截去掉 initial@reference:file :后使用,当plugin未解压:/E:/product/tool/plugins/operationtool_1.0.0.jar/
当 operationtool_1.0.0.jar已解压,并删除operationtool_1.0.0.jar,得到的结果为/E:/product /tool/plugins/operationtool_1.0.0/ 
3.configuration目录的获取:
发布后:
Platform.getConfigurationLocation() ,比如/E:/product/tool/configuration/
4.workspace目录的获取:
发布后:
Platform.getInstanceLocation(), 比如/E:/product/tool/workspace/ 

.号发布前代表src,发布后忽略 
----------------------------------- 以下为参考文档-----------------------------------------------------
从插件/RCP中 取得文件路径的方法 
最近社区 里问这个问题的人特别多,所以在这里将自己用到的几个方法写出来。假如以后还有其他的方法,会进行更新。

从插件中获得绝对路径:
AaaaPlugin.getDefault().getStateLocation().makeAbsolute().toFile().getAbsolutePath());


通过文件得到Project:

 IProject project  =  ((IFile)o).getProject();


通过文件得到全路径:

 String path  =  ((IFile)o).getLocation().makeAbsolute().toFile().getAbsolutePath();


得到整个Workspace的根:

 IWorkspaceRoot root  =  ResourcesPlugin.getWorkspace().getRoot();


从根来查找资源:

 IResource resource  =  root.findMember( new  Path(containerName));

从Bundle来查找资源:

 Bundle bundle  =  Platform.getBundle(pluginId);
URL fullPathString  =  BundleUtility.find(bundle, filePath);

 

得到Appliaction workspace:

 Platform.asLocalURL(PRODUCT_BUNDLE.getEntry( "" )).getPath()).getAbsolutePath();

得到runtimeworkspace:
Platform.getInstanceLocation().getURL().getPath();

从编辑器来获得编辑文件
IEditorPart editor  =  ((DefaultEditDomain)(parent.getViewer().getEditDomain())).getEditorPart();
IEditorInput input  =  editor.getEditorInput();
if (input  instanceof  IFileEditorInput)  {
IFile file  =  ((IFileEditorInput)input).getFile();
}


分享到:
评论

相关推荐

    rcp 学习资料下载,一个简单的rcp例子

    6. **.project**: Eclipse项目配置文件,包含项目的设置和构建路径。 7. **.classpath**: 项目的类路径配置,包括JRE和库的引用。 学习这个RCP例子,你可以从以下几个方面入手: 1. **环境搭建**: 安装Eclipse IDE...

    RCP 嵌入Google map(rcp执行JavaScrit方法,解决打包后路径问题)

    4. **本地文件系统访问**:如果RCP应用支持JRE 1.7及以上版本,可以使用`java.nio.file`包提供的API来访问文件,这在处理打包后的资源路径时更为灵活。 在处理JavaScript与Java之间的交互时,可以使用`Browser`组件...

    RCP2.6和RCP4.5情景下中亚五国棉花和冬小麦逐年需水量数据集(2020-2100).rar

    RCP(Representative Concentration Pathways,代表性浓度路径)是气候变化研究中的一个重要概念,用于描述未来不同温室气体排放情景对全球气候变化的影响。RCP2.6代表较低的温室气体排放情景,而RCP4.5则代表中等...

    Eclipse RCP开发教程

    RCP 应用可以引入外部 JAR 包来扩展其功能,只需在项目的类路径中包含这些 JAR,并在需要的地方导入相应的类。 **8. 添加标志和帮助** 标志(icons)为应用程序提供视觉标识,帮助(Help)系统为用户提供指南和文档...

    rcp 开发档案管理系统

    这可能是系统配置文件中指定的数据存储路径,或者是系统运行时依赖的外部数据源。数据库通常用于存储档案元数据(如文件名、大小、创建日期、修改日期、类别等),以及用户信息、权限设置等相关数据。为了系统能正常...

    eclipse rcp 自学教程

    3. 配置构建路径:确保所有需要的库和资源被正确引用。 4. 导出产品:选择“导出”选项,指定导出目录,生成可执行的RCP程序。 添加菜单和工具栏是提升RCP程序交互性的关键步骤: 1. 创建菜单和工具栏:通过编程...

    RCP和CXF做的例子

    解压后,开发者需要根据项目需求将这些库文件添加到项目的类路径中,然后按照提供的示例或指南进行编码,以了解和学习如何在RCP应用中集成并使用CXF服务,以及如何利用Spring和Hibernate处理数据。

    RCP项目源代码

    - **build.properties**:构建配置文件,定义了编译路径和输出路径。 - **MANIFEST.MF**:插件的元数据文件,定义了插件ID、依赖关系等信息。 - **plugin.xml**:插件的配置文件,定义了视图、编辑器、菜单项等UI...

    JAVA RCP源码

    在Eclipse RCP项目中,它可能包含了构建时的工件信息,比如类路径、依赖项等。通过分析这个JAR,我们可以了解项目的构建过程和依赖关系,对于理解整个应用的架构有重要作用。 3. **features**:这是一个目录,通常...

    rcp工程的描述

    RCP应用程序通常被打包成一个可执行的JAR文件(RCP应用程序),或者使用p2(Pulse)更新机制分发,用户可以通过安装向导来安装和升级应用程序,这使得软件的部署和更新更加便捷。 总结来说,RCP是一种强大的开发...

    插件导入rcp项目(详细).doc

    完成插件功能开发后,需要将插件导出为JAR文件,以便于在其他RCP项目中使用。 1. **修改`plugin.xml`**: - 打开`com.HelloRcp`项目中的`plugin.xml`文件。 - 在`<runtime>`标签下的`<exports>`部分添加需要导出...

    RCP 菜单与工具栏小结

    “menuPath”是菜单路径的标识符,用于指定将菜单项添加到哪个位置。 ### RCP菜单与工具栏的定制和扩展 RCP的菜单和工具栏支持高度的定制和扩展。开发者可以通过定义贡献点、贡献项以及动作类来自定义菜单和工具栏...

    eclipse 3.6 rcp 开发

    - 将JAR添加到项目的构建路径中。 - 通过Product Export Wizard确保JAR被包含在最终的产品发布中。 #### 14. 提示和策略 - **控制台日志**: 使用Platform.getLog()获取Logger实例,记录日志信息。 - **保存用户的...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    - **向构建路径中添加JAR**:将外部库引入到RCP项目中。 - **使JAR在你的运行路径里有效**:确保JAR在运行时可用。 14. **提示和策略** - **控制台日志**:理解和使用Eclipse控制台进行日志记录。 - **保存用户...

    RCP 开发自学教程

    - 将JAR文件添加到项目的构建路径中。 **13.3 使JAR在你的运行路径里有效** - **有效化**: - 确保在运行或打包应用时能够访问到这些JAR文件。 #### 十四、提示和策略 - **提示和策略**: - 提供了一些开发过程...

    Eclipse_RCP_自学教程.doc

    RCP 应用可以引用外部 JAR 文件来引入额外的功能或库,这通常通过构建路径设置来实现。 11. 添加标志和帮助 在 RCP 应用中添加产品标志和帮助文档是提升用户体验的关键,这可以通过定义产品配置文件和集成帮助...

    RCP 创建plugin frament project

    在Eclipse RCP (Rich Client Platform)开发中,创建`Plugin fragment project`是构建...创建和配置Fragment工程的关键在于正确修改MANIFEST.MF文件和设置正确的类路径,以确保Fragment能够正确地与HOST工程协同工作。

Global site tag (gtag.js) - Google Analytics