Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EclipseRCP:利用配置目录_Java_Eclipse_Rcp - Fatal编程技术网

Java EclipseRCP:利用配置目录

Java EclipseRCP:利用配置目录,java,eclipse,rcp,Java,Eclipse,Rcp,我的EclipseRCP应用程序需要一个配置文件,其中包含一些连接到远程数据库的信息。存储此配置文件的最佳位置在哪里 为此,我可以使用默认配置目录(通常存储'config.ini'的位置)吗?如果是这样,如何以编程方式将文件实例获取到此位置?我还注意到这个目录在我的EclipseIDE中不存在 谢谢。通常,我喜欢将配置文件隐藏在“bin”目录中,或者不在根目录中的某个地方。您可能应该将其保存在项目的子目录中,这样您就不会在系统上乱丢一些位置。如果需要获取文件句柄,只需执行以下操作: File c

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

为此,我可以使用默认配置目录(通常存储'config.ini'的位置)吗?如果是这样,如何以编程方式将文件实例获取到此位置?我还注意到这个目录在我的EclipseIDE中不存在


谢谢。

通常,我喜欢将配置文件隐藏在“bin”目录中,或者不在根目录中的某个地方。您可能应该将其保存在项目的子目录中,这样您就不会在系统上乱丢一些位置。如果需要获取文件句柄,只需执行以下操作:

File configFile = new File("./bin/remoteDbConfig.ini");
然后,如果它是一个真正的ini文件,您可以使用加载和使用ini文件中的值。


您还可以使用Preferences API存储远程连接所需的数据

看看资源插件-可能会给你你想要的:


根据您的需求,您一如既往地有许多选择

  • 使用以使用合适的PreferenceInitializer存储在PreferenceStore中。相当大和广泛的API与相当多的思想去了。默认情况下,首选项不会向用户或管理员公开,因此您需要做一些工作来公开首选项页面,或者写入属性文件
对于较不高级/较少的工作,尤其是如果您没有访问eclipse首选项(例如服务器端OSGi)的权限:

  • 在RCP.ini中设置为系统属性。启动后用户不可更改,需要访问RCP.ini(eclipse.ini)文件,这可能是可能的,特别是如果您没有提供IDE
  • 设置为系统属性,作为快捷方式中的参数。取决于使用快捷方式的用户。需要在安装时生成专门的快捷方式

如果文件系统的可访问性非常重要,那么我会考虑使用上面的一种方法来设置<代码> ETC < /C>目录,并且如果在第一次使用时不存在,则允许您的包在<代码> ETC < /代码>目录中生成默认属性文件。这实质上是滚动您自己的首选项存储,所以如果您确实有访问首选项捆绑包,那么您最好这样做。这个相当古老的方法也可能有用


我确实记得Erich Gamma(如《四人帮》和JDT技术负责人)在一次采访中说,大约有七种不同的偏好机制,他从来不知道应该使用哪种机制。

要获取配置目录的文件位置,请运行:


新建org.eclipse.core.runtime.preferences.ConfigurationScope().getLocation().toFile()

正如前面所指出的,Preferences API是值得一看的。还有一个安全首选项API,它适用于在光盘上存储加密的用户名和密码

另一个选项是使用“org.eclipse.osgi.service.datalocation.Location”osgi服务。这样可以访问不同的可用位置


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

这是RCP可能还没有的一组主要插件。这确实提供了首选项存储的实现,只允许将首选项存储在工作区中。您的链接也不会指向任何以首选项为中心的内容:(用户是否可以更改设置,或者它们是相对硬编码的?您可以通过编程方式更改设置,但必须为用户提供一种方法。(GUI首选项选项,如eclipse、cmd line arg等)Properties.setProperty(key、val),后跟Properties.store(stream、header)