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