在Windows 7上,Java JVM如何设置“user.home”系统属性?

我正在使用JRE 1.7,我发现user.home系统属性非常不寻常。 JVM如何设置此值?

这个Java错误解释了如何: http : //bugs.sun.com/view_bug.do?video_id = 4787931

系统属性user.home设置为:

  1. 读取密钥的注册表值: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop
  2. 获取此值的父路径,但解析环境变量。

示例: %userprofile%\Desktop => %userprofile% (未解析的环境变量)

这个问题应该在Java 8中修复。

相关参考: Java user.home被设置为%userprofile%并且未被解析

在Windows中,它会像接受的答案中所述那样获得它,并且取决于Desktop文件夹位置。

如果要更改默认的桌面文件夹位置,并且仍希望将user.home放在同一文件夹中,则有解决方法:

将此添加到环境变量中:
_JAVA_OPTIONS:-Duser.home =%HOMEDRIVE %% HOMEPATH%

或者在命令行中:
set _JAVA_OPTIONS = -Duser.home =%HOMEDRIVE %% HOMEPATH%

我在本页的评论中看到了解决方案: http : //www.timehat.com/javas-user-home-is-wrong-on-windows/