代码之家  ›  专栏  ›  技术社区  ›  Dan Polites

Java user.home被设置为%userprofile%,未解析

  •  34
  • Dan Polites  · 技术社区  · 15 年前

    我们公司最近从Windows XP升级到Windows 7 Enterprise。JDK安装不再设置 用户主页 指向用户目录的完整路径,但将user.home设置为 %userprofile%

    以下是属性列表。注意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...
    

    更新:

    价值 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop 在我安装的Windows 7 Enterprise上。

    C:\Users\politesp\Desktop

    5 回复  |  直到 11 年前
        1
  •  25
  •   StayOnTarget Charlie Flowers    5 年前

    大多数注册表项位于:

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

    1. 转到开始>跑
    2. 类型 regedit . 这将打开注册表编辑器。
    3. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
    4. 右击 Shell Folders 然后选择导出。
    5. 选择桌面作为目标,然后输入
    6. 在文本编辑器中打开文件并替换 %用户配置文件% C:\\Users\\yourusername . 保存并关闭文件。
    7. 返回注册表编辑器窗口并选择文件>从主菜单导入。
    8. Shell Folders.reg 然后单击“打开”。
    9. 关闭注册表编辑器并删除 Shell Folders.reg 从桌面上删除文件。
        2
  •  16
  •   Brett    14 年前

    这是因为Java中存在一个长期未解决的bug: http://bugs.sun.com/view_bug.do?bug_id=4787931

        3
  •  11
  •   Andreas Dolk    15 年前

    %USERPROFILE% echo %USERPROFILE% 在命令外壳上?

    %用户配置文件% user.home

    编辑

    以下是有关USERPROFILE和user.home的Vista/Windows7问题: bug . 可能解决不了你的问题可能会给你一个主意。。

        4
  •  10
  •   Luka BradeÅ¡ko    11 年前


    _JAVA_选项:-Duser.home=%HOMEDRIVE%%HOMEPATH%

    或在命令行中:
    设置_JAVA_OPTIONS=-Duser.home=%HOMEDRIVE%%HOMEPATH%

    我在本页的评论中看到了解决方案: http://www.timehat.com/javas-user-home-is-wrong-on-windows/

        5
  •  1
  •   Manish Jesani    10 年前

    "REG_SZ" "REG_EXPAND_SZ" 他们治疗 "%data%"

    Type "REG_SZ" leaves any "%data%" as is.
    

    “REG_扩展_SZ” 取代 %data% "data" 如果定义了环境变量值,则不会发生解析。

    Windows GUI环境变量编辑小程序根据以下情况选择正确的类型: "%name%" 显示在“值”字段中。

    这个问题听起来像是安装程序在写入注册表时做出了错误的选择。