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

16

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

2个回答

24
这个Java bug的解释如下:https://bugs.java.com/bugdatabase/view_bug?bug_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 is being set to %userprofile% and not being resolved

8
在Windows中,它会按照接受的答案所述获取它,并且依赖于桌面文件夹位置。如果您想更改默认的桌面文件夹位置,但仍希望在同一文件夹中拥有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/

好的建议!我从来不知道这个环境变量。我在这里学到了更多关于它的信息:https://dev59.com/1mMm5IYBdhLWcg3wMs7R - kevinarpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接