Eclipse RCP:InternalPlatform.getDefault().getUserLocation() 没有 return C:\Users\username\AppData\Roaming
Eclipse RCP: InternalPlatform.getDefault().getUserLocation() doesen't return C:\Users\username\AppData\Roaming
我目前正在将 Eclipse 3.0 应用程序迁移到 4.4。用户数据过去和现在都应该存储在文件夹 C:\Users\username\AppData\Roaming\applicationname
中
应用程序正在使用以下代码读取目录:
public static String getUserDirectory()
{
String directory = InternalPlatform.getDefault().getUserLocation().getFile();
return directory;
}
我知道该代码已弃用,但以下代码 return 相同:
public static String getUserDirectory()
{
String directory = Platform.getUserLocation().getURL().getFile();
return directory;
}
它们都 return C:\Users\username\user
但正如我所说,用户数据应存储在 C:\Users\username\AppData\Roaming\applicationname
。这些方法的行为是否发生了变化?
如何实现我将我的用户数据存储在 C:\Users\username\AppData\Roaming\applicationname
下并且我的应用程序仍然可以找到该目录?
我知道这与我不完全理解的环境变量有关。
我手头没有 3.x 目标平台可以比较,但 C:\Users\username\user
看起来完全错误。
如果您对细节感兴趣,EquinoxLocations
的构造函数会计算 userLocation
并在未指定默认值的情况下将文字 'user' 添加到用户的主目录。
因此,如果您使用 -user @user.home
或 -Dosgi.user.area=@user.home
启动您的应用程序,用户位置将设置为 C:\Users\username\
。仍然不是您要找的东西,但至少是一个合理的值。
我认为这是 Equinox 中的一个 bug,建议提交一个 bugzilla。如果事实证明这种方法有充分的理由,错误条目仍将作为 documentation/reasoning.
同时您可以通过System.getenv( "APPDATA" )
获得Windows上的主目录。根据 this post 它将 return 漫游主目录 。
我通过在 config.ini.product 文件的“配置”选项卡中添加三个属性解决了这个问题:
osgi.configuration.area =
@user.home/AppData/Roaming/ApplicationName/...
osgi.user.area =
@user.home/AppData/Roaming/ApplicationName/...
osgi.instance.area =
@user.home/AppData/Roaming/ApplicationName
现在我的问题中所述的方法读取由这些属性配置的路径,生成的 config.ini 文件看起来与使用 Eclipse 3.0 的旧版本完全一样。
我目前正在将 Eclipse 3.0 应用程序迁移到 4.4。用户数据过去和现在都应该存储在文件夹 C:\Users\username\AppData\Roaming\applicationname
应用程序正在使用以下代码读取目录:
public static String getUserDirectory()
{
String directory = InternalPlatform.getDefault().getUserLocation().getFile();
return directory;
}
我知道该代码已弃用,但以下代码 return 相同:
public static String getUserDirectory()
{
String directory = Platform.getUserLocation().getURL().getFile();
return directory;
}
它们都 return C:\Users\username\user
但正如我所说,用户数据应存储在 C:\Users\username\AppData\Roaming\applicationname
。这些方法的行为是否发生了变化?
如何实现我将我的用户数据存储在 C:\Users\username\AppData\Roaming\applicationname
下并且我的应用程序仍然可以找到该目录?
我知道这与我不完全理解的环境变量有关。
我手头没有 3.x 目标平台可以比较,但 C:\Users\username\user
看起来完全错误。
如果您对细节感兴趣,EquinoxLocations
的构造函数会计算 userLocation
并在未指定默认值的情况下将文字 'user' 添加到用户的主目录。
因此,如果您使用 -user @user.home
或 -Dosgi.user.area=@user.home
启动您的应用程序,用户位置将设置为 C:\Users\username\
。仍然不是您要找的东西,但至少是一个合理的值。
我认为这是 Equinox 中的一个 bug,建议提交一个 bugzilla。如果事实证明这种方法有充分的理由,错误条目仍将作为 documentation/reasoning.
同时您可以通过System.getenv( "APPDATA" )
获得Windows上的主目录。根据 this post 它将 return 漫游主目录 。
我通过在 config.ini.product 文件的“配置”选项卡中添加三个属性解决了这个问题:
osgi.configuration.area = @user.home/AppData/Roaming/ApplicationName/...
osgi.user.area = @user.home/AppData/Roaming/ApplicationName/...
osgi.instance.area = @user.home/AppData/Roaming/ApplicationName
现在我的问题中所述的方法读取由这些属性配置的路径,生成的 config.ini 文件看起来与使用 Eclipse 3.0 的旧版本完全一样。