Our company recently upgraded from Windows XP to Windows 7 Enterprise. The JDK installation is no longer setting user.home to the full path of the user directory, but instead is setting user.home to %userprofile%
. This is causing a lot of issues with applications such as Eclipse, Maven, etc. I now have to set -Duser.home in the JVM for each application. Has anyone else experienced this? Is there a fix for this? Would this be related to the installation of Windows 7 Enterprise? I have tried the 1.5 JDK and the 1.6 JDK.
Here is the list of properties. Note user.home:
-- listing properties -- java.runtime.name=Java(TM) SE Runtime Environment sun.boot.library.path=C:\Program Files\Java\jre6\bin 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:\Users\politesp\Desktop java.runtime.version=1.6.0_18-b07 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment java.endorsed.dirs=C:\Program Files\Java\jre6\lib\endorsed os.arch=x86 java.io.tmpdir=C:\Users\politesp\AppData\Local\Temp\ line.separator= java.vm.specification.vendor=Sun Microsystems Inc. user.variant= os.name=Windows 7 sun.jnu.encoding=Cp1252 java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\Sun\... 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 Files\Java\jre6 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 Files\Java\jre6\lib\ext;C:... sun.boot.class.path=C:\Program Files\Java\jre6\lib\resour... 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...
Update:
Using the link to the bug from Andreas_D I discovered:
The value of HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop
is %userprofile%\Desktop on my installation of Windows 7 Enterprise.
When I change the value of this key to C:\Users\politesp\Desktop
, my user.home resolves correctly. Any idea why this is happening?
The majority of the registry keys located at:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
began with %userprofile%
. I updated all of the registry keys that began with %userprofile%
to begin with C:\Users\myusername
. I verified on Windows XP that the paths are in fact hard coded and that %userprofile%
is not used. The IT guys mentioned that the registry keys defaulted to use %userprofile%
due to a default profile being used within Windows 7. The JVM expects the Desktop path to be hard coded. It will not evaluate environment variables.
You can update the registry keys one by one or you can export the folder out and change the keys. Here is how you can export and import the registry keys:
regedit
. This opens the registry editor.HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
.Shell Folders
and choose Export.Shell Folders
for the file name and save the file.%userprofile%
with C:\\Users\\yourusername
. Save and close the file.Shell Folders.reg
and click Open.Shell Folders.reg
file off of the desktop.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With