Eclipse rcp Eclipse RCP:私有配置目录(使用共享安装时在~/.Eclipse中创建)的默认名称是如何构造的?

Eclipse rcp Eclipse RCP:私有配置目录(使用共享安装时在~/.Eclipse中创建)的默认名称是如何构造的?,eclipse-rcp,Eclipse Rcp,形势 我开发了一个EclipseRCP应用程序。此应用程序可以安装在Windows和Linux系统上 如果此应用程序以管理员模式(Windows)或超级用户(Linux)安装,则该应用程序通常安装在受写保护的共享安装目录中 在Windows上,我们的产品安装程序始终以管理员模式运行。默认安装目录是(写保护)C:\Program Files\MyProduct 在Linux上,安装程序可以由普通用户和超级用户运行。对于超级用户,默认安装目录是(也写保护)/opt/MyProduct 这就是Ec

形势

我开发了一个EclipseRCP应用程序。此应用程序可以安装在Windows和Linux系统上

如果此应用程序以管理员模式(Windows)或超级用户(Linux)安装,则该应用程序通常安装在受写保护的共享安装目录中

  • 在Windows上,我们的产品安装程序始终以管理员模式运行。默认安装目录是(写保护)
    C:\Program Files\MyProduct
  • 在Linux上,安装程序可以由普通用户和超级用户运行。对于超级用户,默认安装目录是(也写保护)
    /opt/MyProduct
这就是Eclipse本身所称的

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

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

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

.eclipse/1410846118
如果我添加一个
.eclipseproduct
元数据文件,默认行为会改变。文件内容如下所述:

这将生成具有以下名称的专用目录:

.eclipse/com.mycompany.myproduct.gui.product_1.8.17_1410846118/
这意味着,尽管现在使用的是产品ID和版本,但相同的看似随机的数字仍然作为后缀存在

我的问题很简单:这个数字是多少?我如何计算

Eclipse似乎能够在安装后计算它。然而,我似乎在任何共享安装的文件中都找不到它

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

这方面的代码似乎位于
org.eclipse.core.runtime.adapter.LocationManager
中。这将在安装目录中名为
.eclipseproduct
的文件中查找产品id。如果文件不存在,它将使用安装目录路径的哈希代码,这大概就是您看到的

所以我认为您需要一个
.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);
File installDir=osgi.install.area中安装目录的路径
int哈希码;
试一试{
hashCode=installDir.getCanonicalPath().hashCode();
}捕获(ioe异常ioe){
//退回到绝对路径
hashCode=installDir.getAbsolutePath().hashCode();
}
if(hashCode<0)
hashCode=-(hashCode);
String installDirHash=String.valueOf(hashCode);

谢谢,我测试了
.eclipseproduct
文件,确实使用了该文件,但哈希仍然用作后缀。我把这一点融入了我的问题中!是的,再次查看代码时,哈希始终被追加。添加了如何计算的说明。再次感谢。你知道我是否可以完全否决这个目录吗?我试图设置
osgi.user.area
osgi.user.area.default
属性,但是特定于用户的内容总是放在
~/.eclipse
中……看起来它可能会使用
osgi.configuration.area.default
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);