Java user.home正在被设置为%userprofile%并且未被解析

我们公司最近从Windows XP升级到Windows 7 Enterprise。 JDK安装不再将user.home设置为用户目录的完整路径,而是将user.home设置为%userprofile% 。 这导致了很多与Eclipse,Maven等应用程序有关的问题。我现在必须在每个应用程序的JVM中设置-Duser.home。 有没有其他人经历过这个? 有没有解决这个问题? 这与Windows 7 Enterprise的安装有关吗? 我试过了1.5 JDK和1.6 JDK。

这是属性列表。 注意user.home:

-- listing properties --
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=C:Program FilesJavajre6bin
java.vm.version=16.0-b13
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:UserspolitespDesktop
java.runtime.version=1.6.0_18-b07
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:Program FilesJavajre6libendorsed
os.arch=x86
java.io.tmpdir=C:UserspolitespAppDataLocalTemp
line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows 7
sun.jnu.encoding=Cp1252
java.library.path=C:WINDOWSsystem32;.;C:WINDOWSSun...
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=6.1
user.home=%userprofile%
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=Cp1252
java.specification.version=1.6
user.name=politesp
java.class.path=.
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:Program FilesJavajre6
java.specification.vendor=Sun Microsystems Inc.
user.language=en
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_18
java.ext.dirs=C:Program FilesJavajre6libext;C:...
sun.boot.class.path=C:Program FilesJavajre6libresour...
java.vendor=Sun Microsystems Inc.
file.separator=
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+m...

更新:

使用从Andreas_D的错误链接,我发现:

在安装Windows 7 Enterprise时, HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersDesktop值为%userprofile% Desktop

当我将此键的值更改为C:UserspolitespDesktop ,我的user.home正确解析。 任何想法为什么发生这种情况?


大部分注册表项位于:

HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Explorer Shell文件夹

从%userprofile%开始。 我更新了以%userprofile%开头的所有注册表项,以C: Users myusername开头。 我在Windows XP上验证过,路径实际上是硬编码的,%userprofile%没有被使用。 IT人员提到,由于在Windows 7中使用了默认配置文件,注册表项默认使用%userprofile%.JVM希望桌面路径是硬编码的。 它不会评估环境变量。

您可以逐个更新注册表项,也可以导出文件夹并更改密钥。 以下是您可以如何导出和导入注册表项的方法:

1.  Go to Start > Run.
2.  Type regedit. This opens the registry editor.
3.  Browse to HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders.
4.  Right click on Shell Folders and choose Export.
5.  Select the Desktop as the destination and enter Shell Folders for the file name and save the file.
6.  Open the file in a text editor and replace %userprofile% with C:Usersyourusername. Save and close the file.
7.  Go back to the registry editor window and select File > Import from the main menu.
8.  Select Shell Folders.reg and click Open.
9.  Close the registry editor and delete the Shell Folders.reg file off of the desktop.

这是由于Java中一个长期存在的bug:http://bugs.sun.com/view_bug.do?bug_id=4787931


它看起来好像 - 出于任何原因 - %USERPROFILE%尚未设置为值。 如果在命令shell中输入echo %USERPROFILE% ,会得到什么结果?

也许它不是一个操作系统功能,而是一个配置问题。 在我的机器上(Vista), %USERPROFILE%解析到我的主目录,对于Java属性user.home

编辑

这是USERPROFILE和user.home:bug中的Vista / Windows7问题。 可能无法解决你的问题可能会给你一个想法..

链接地址: http://www.djcxy.com/p/90547.html

上一篇: Java user.home is being set to %userprofile% and not being resolved

下一篇: Eclipse is not starting on Windows 7