长久以来一直为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(); }
|
分享到:
相关推荐
6. **.project**: Eclipse项目配置文件,包含项目的设置和构建路径。 7. **.classpath**: 项目的类路径配置,包括JRE和库的引用。 学习这个RCP例子,你可以从以下几个方面入手: 1. **环境搭建**: 安装Eclipse IDE...
4. **本地文件系统访问**:如果RCP应用支持JRE 1.7及以上版本,可以使用`java.nio.file`包提供的API来访问文件,这在处理打包后的资源路径时更为灵活。 在处理JavaScript与Java之间的交互时,可以使用`Browser`组件...
RCP(Representative Concentration Pathways,代表性浓度路径)是气候变化研究中的一个重要概念,用于描述未来不同温室气体排放情景对全球气候变化的影响。RCP2.6代表较低的温室气体排放情景,而RCP4.5则代表中等...
RCP 应用可以引入外部 JAR 包来扩展其功能,只需在项目的类路径中包含这些 JAR,并在需要的地方导入相应的类。 **8. 添加标志和帮助** 标志(icons)为应用程序提供视觉标识,帮助(Help)系统为用户提供指南和文档...
这可能是系统配置文件中指定的数据存储路径,或者是系统运行时依赖的外部数据源。数据库通常用于存储档案元数据(如文件名、大小、创建日期、修改日期、类别等),以及用户信息、权限设置等相关数据。为了系统能正常...
3. 配置构建路径:确保所有需要的库和资源被正确引用。 4. 导出产品:选择“导出”选项,指定导出目录,生成可执行的RCP程序。 添加菜单和工具栏是提升RCP程序交互性的关键步骤: 1. 创建菜单和工具栏:通过编程...
解压后,开发者需要根据项目需求将这些库文件添加到项目的类路径中,然后按照提供的示例或指南进行编码,以了解和学习如何在RCP应用中集成并使用CXF服务,以及如何利用Spring和Hibernate处理数据。
- **build.properties**:构建配置文件,定义了编译路径和输出路径。 - **MANIFEST.MF**:插件的元数据文件,定义了插件ID、依赖关系等信息。 - **plugin.xml**:插件的配置文件,定义了视图、编辑器、菜单项等UI...
在Eclipse RCP项目中,它可能包含了构建时的工件信息,比如类路径、依赖项等。通过分析这个JAR,我们可以了解项目的构建过程和依赖关系,对于理解整个应用的架构有重要作用。 3. **features**:这是一个目录,通常...
RCP应用程序通常被打包成一个可执行的JAR文件(RCP应用程序),或者使用p2(Pulse)更新机制分发,用户可以通过安装向导来安装和升级应用程序,这使得软件的部署和更新更加便捷。 总结来说,RCP是一种强大的开发...
完成插件功能开发后,需要将插件导出为JAR文件,以便于在其他RCP项目中使用。 1. **修改`plugin.xml`**: - 打开`com.HelloRcp`项目中的`plugin.xml`文件。 - 在`<runtime>`标签下的`<exports>`部分添加需要导出...
“menuPath”是菜单路径的标识符,用于指定将菜单项添加到哪个位置。 ### RCP菜单与工具栏的定制和扩展 RCP的菜单和工具栏支持高度的定制和扩展。开发者可以通过定义贡献点、贡献项以及动作类来自定义菜单和工具栏...
- 将JAR添加到项目的构建路径中。 - 通过Product Export Wizard确保JAR被包含在最终的产品发布中。 #### 14. 提示和策略 - **控制台日志**: 使用Platform.getLog()获取Logger实例,记录日志信息。 - **保存用户的...
- **向构建路径中添加JAR**:将外部库引入到RCP项目中。 - **使JAR在你的运行路径里有效**:确保JAR在运行时可用。 14. **提示和策略** - **控制台日志**:理解和使用Eclipse控制台进行日志记录。 - **保存用户...
- 将JAR文件添加到项目的构建路径中。 **13.3 使JAR在你的运行路径里有效** - **有效化**: - 确保在运行或打包应用时能够访问到这些JAR文件。 #### 十四、提示和策略 - **提示和策略**: - 提供了一些开发过程...
RCP 应用可以引用外部 JAR 文件来引入额外的功能或库,这通常通过构建路径设置来实现。 11. 添加标志和帮助 在 RCP 应用中添加产品标志和帮助文档是提升用户体验的关键,这可以通过定义产品配置文件和集成帮助...
在Eclipse RCP (Rich Client Platform)开发中,创建`Plugin fragment project`是构建...创建和配置Fragment工程的关键在于正确修改MANIFEST.MF文件和设置正确的类路径,以确保Fragment能够正确地与HOST工程协同工作。