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 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的错误的链接,我发现:

在我安装的Windows 7

Enterprise上,值HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell

Folders\Desktop是 。

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

回答:

大多数注册表项位于:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \

Explorer \ Shell文件夹

始于%userprofile%。我更新了%userprofile%以开头的所有注册表项C:\Users\myusername。我在Windows

XP上验证了路径实际上是硬编码的,%userprofile%并且没有使用。IT人士提到,%userprofile%由于Windows

7中使用了默认配置文件,因此默认使用注册表项。JVM 希望对桌面路径进行硬编码。它不会评估环境变量。

您可以一个接一个地更新注册表项,也可以导出文件夹并更改注册表项。这是导出和导入注册表项的方法:

  1. 转到开始>运行。
  2. 输入regedit。这将打开注册表编辑器。
  3. 浏览至HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
  4. 右键单击Shell Folders并选择导出。
  5. 选择桌面作为目标,然后输入Shell Folders文件名并保存文件。
  6. 在文本编辑器中打开文件并替换%userprofile%C:\\Users\\yourusername。保存并关闭文件。
  7. 返回注册表编辑器窗口,然后从主菜单中选择“文件”>“导入”。
  8. 选择Shell Folders.reg并单击打开。
  9. 关闭注册表编辑器,然后Shell Folders.reg从桌面删除文件。

以上是 Java user.home设置为%userprofile%并且未解析 的全部内容, 来源链接: utcz.com/qa/416917.html

回到顶部