Java user.home被设置为%userprofile%而未解析 [英] Java user.home is being set to %userprofile% and not being resolved

查看:137
本文介绍了Java user.home被设置为%userprofile%而未解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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.

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

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...

更新:

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

Using the link to the bug from Andreas_D I discovered:

HKEY_CURRENT_USER \Software \ Microoft \ Windows的价值我安装Windows 7企业版时,\\ currentVersion \Explorer \ Shell文件夹\Desktop %userprofile%\Desktop

当我将此密钥的值更改为 C:\Users\politesp\Desktop 时,我的user.home正确解析。知道为什么会这样吗?

When I change the value of this key to C:\Users\politesp\Desktop, my user.home resolves correctly. Any idea why this is happening?

推荐答案

大多数注册表项位于:


HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer \ Shell
文件夹

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

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

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:

1.  Go to Start > Run.
2.  Type regedit. This opens the registry editor.
3.  Browse to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell 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:\\Users\\yourusername. 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 user.home被设置为%userprofile%而未解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆