Eclipse RCP: 利用配置目录

7

我的Eclipse RCP应用程序需要一个配置文件,其中包含一些连接到远程数据库的信息。最佳存储此配置文件的位置在哪里?

我可以使用默认的配置目录(通常存储“config.ini”文件的位置)吗?如果可以,如何以编程方式获取到该目录的File实例?我还注意到在我的Eclipse IDE中不存在此目录。

谢谢。

5个回答

5

根据您的需求,您有多种选择。

  • 使用运行时首选项将其存储在适当的PreferenceInitializer中的PreferenceStore中。这是一个相当大且广泛的API,经过了很多思考。默认情况下,偏好设置不会向用户或管理员公开,因此您需要进行一些工作来公开偏好设置页面或写入属性文件。

对于较少高级/较少工作量的情况,特别是如果您没有访问Eclipse首选项(例如服务器端OSGi):

  • 在RCP.ini中设置为系统属性。启动后无法更改,需要访问RCP.ini(eclipse.ini)文件,这可能是可能的,特别是如果您没有为IDE做出贡献。
  • 作为快捷方式中的参数设置为系统属性。取决于用户使用快捷方式。需要在安装时生成专用快捷方式。
如果从文件系统中访问十分重要,那么我建议使用上述方法之一来设置etc目录,然后让您的bundles在首次使用时在etc目录中生成默认属性文件。这本质上是自己构建偏好存储,所以如果您有访问偏好设置bundle的权限,最好使用该方法。这篇相当古老的用户设置FAQ也可能会有所帮助。
我记得Erich Gamma(即四人帮和JDT技术主管)曾经接受过采访,他说有大约七种不同的偏好设置机制,他从来不知道该使用哪一个。

2

正如之前提到的,首先要考虑使用Preferences API。还有一种适合将用户名称和密码加密存储在磁盘上的Secure Preferences API。

另一个选择是使用'org.eclipse.osgi.service.datalocation.Location' OSGi服务。这提供了对不同位置的访问。

第三个选项是在'config.ini'中定义系统属性,该属性指向包含连接信息的文件,并使用占位符:'my.connection.settings=@config.dir/mysettings.ini'。 '@config.dir'是一个占位符,它会被实际的配置目录路径所替换。


1

这是一组相当重要的插件,可能RCP尚未拥有。它提供了首选项存储的实现,仅允许在工作区中存储首选项。您提供的链接也没有指向任何关于首选项的内容。 :( - jamesh

0
通常,我喜欢将配置文件隐藏在“bin”目录中,或者放在根目录之外的某个地方。你应该将它保存在项目的子目录中,这样就不会在系统上随意地弄乱一些位置。如果你需要获取文件的句柄,只需执行以下操作:
File configFile = new File("./bin/remoteDbConfig.ini");

如果它是一个真正的ini文件,你可以使用Properties.load()来加载并使用ini文件中的值。

你也可以使用Preferences API来存储远程连接所需的数据。


用户能否更改设置,还是它们相对于硬编码而言? - Mario Ortegón
你可以通过编程方式更改设置,但必须为用户提供一种方法来执行此操作(例如GUI首选项选项,如eclipse、cmd行参数等)。使用Properties.setProperty(key, val)方法设置属性,然后使用Properties.store(stream, header)方法将其存储到流中。 - Ovi Tisler

0
要获取配置目录的文件位置,请运行以下命令:
new org.eclipse.core.runtime.preferences.ConfigurationScope().getLocation().toFile();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接