Eclipse RCP的:如何在私有配置目录的默认名称构成(在〜/ .eclipse使用共享安装时创

2019-10-18 14:29发布

情况

我已经开发了一个Eclipse RCP应用程序。 此应用程序可以安装在Windows和Linux系统。

如果该应用程序安装在管理员模式(Windows)或由超级用户(Linux)上,该应用程序通常安装在一个写保护的共享安装目录

  • 在Windows中,我们的产品安装在管理员 -模式始终运行。 默认安装目录是(写保护) C:\Program Files\MyProduct
  • 在Linux上,安装者可以通过两个普通用户和超级用户运行。 对于超级用户的默认安装目录是(也写保护) /opt/MyProduct

这就是Eclipse本身调用共享的安装 。

显然,运行应用程序一个普通用户没有权限在这个目录进行修改。 因此,如改变配置数据或自动更新的插件运行时数据被写入用户特定的专用配置区域

  • 在Windows上,默认的子目录$USERPROFILE\.eclipse\
  • 在Linux上,这也默认的子目录~/.eclipse/

问题

默认情况下,内部的私有目录.eclipse有一个看似随意的名称:

.eclipse/1410846118

如果我添加一个.eclipseproduct元数据文件,默认的行为变化。 该文件的内容在此被描述论坛的帖子 :

# FILE:
name=MyProduct
id=com.mycompany.myproduct.gui.product
version=1.8.17

这将导致与以下名称的私有目录:

.eclipse/com.mycompany.myproduct.gui.product_1.8.17_1410846118/

这意味着虽然产品ID和版本现在使用中,相同的看似随机数仍然存在作为后缀。

我的问题很简单:这是什么号码,我该怎么计算呢?

Eclipse中似乎能安装后计算。 但是,我似乎没有使用发现它在共享安装的任何文件

sudo find /opt/MyProduct -name '*' | xargs grep -e '1410846118'

Answer 1:

该代码,这似乎是在org.eclipse.core.runtime.adaptor.LocationManager 。 这会在一个名为文件中的产品ID .eclipseproduct安装目录。 如果该文件不存在,它用这大概是你所看到的安装目录路径的哈希码。

所以,我认为你需要一个.eclipseproduct文件。 见编译过程中定义.eclipseproduct一些更多的信息。

编辑:

即使在产品文件的哈希码仍追加。 哈希正在使用此计算:

File installDir = path of install directory from osgi.install.area
int hashCode;
try {
    hashCode = installDir.getCanonicalPath().hashCode();
} catch (IOException ioe) {
    // fall back to absolute path
    hashCode = installDir.getAbsolutePath().hashCode();
}
if (hashCode < 0)
    hashCode = -(hashCode);
String installDirHash = String.valueOf(hashCode);


文章来源: Eclipse RCP: How is the default name of the private configuration directory (created in ~/.eclipse when using a shared install) constructed?
标签: eclipse-rcp