当前位置: 首页 > 面试题库 >

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

商飞尘
2023-03-14
问题内容

我们公司最近从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%userprofile%\ 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。保存并关闭html" target="_blank">文件。
  7. 返回注册表编辑器窗口,然后从主菜单中选择“文件”>“导入”。
  8. 选择Shell Folders.reg并单击打开。
  9. 关闭注册表编辑器,然后Shell Folders.reg从桌面删除文件。


 类似资料:
  • 我已经安装了android bundle,我已经在。bashrc文件中配置了所有的东西,甚至当我在命令行中说android时…我得到了Android管理器..但是当我说ionic platform add android时,我总是得到错误:“error:ANDROID_HOME没有设置,并且”android“命令不在您的路径中。您必须至少满足以下条件之一。”.我试了很多方法,但问题没有解决。 我的

  • 问题内容: 我已经安装了android bundle,并且我已经在.bashrc文件中配置了所有内容,甚至当我在命令行中说android时。我正在获取android管理器..但是当我说离子平台添加android时,我总是会收到错误提示为“错误:ANDROID_HOME未设置,并且路径中未包含“ android”命令。您必须至少满足以下条件之一。” 。我尝试了很多方法,但是问题没有解决。 我的平台:

  • 我正在阅读https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/datastream/kafka/#kafka-消费者补偿提交行为配置 它说: 启用检查点:如果启用了检查点,Flink Kafka使用者将在检查点完成时提交存储在检查点状态中的偏移量。这确保了Kafka代理中提交的偏移量与检查点状态中

  • 问题内容: 当我使用Spring收听JMS消息时,我收到了以上错误。 我想知道如何将错误处理程序添加到JMS侦听器中? 问题答案: 上有一个物业: bean 在哪里实现: 但是请注意,根据文档: 该消息侦听器的默认行为将 在错误级别记录任何此类异常 。[…]但是,如果必须进行错误处理,则可以将错误处理程序策略的任何实现提供给setErrorHandler(ErrorHandler)方法。 检查您的

  • 我正在进入一个比赛的分钟,但在第一天的编码,我得到的错误,你可以看到的问题,以及我的项目不能建立 如果你需要更多的截图只管问。

  • 本文向大家介绍详解小程序设置缓存并且不覆盖原有数据,包括了详解小程序设置缓存并且不覆盖原有数据的使用技巧和注意事项,需要的朋友参考一下 最近在写小程序的小项目,因为是刚上手小程序,这途中遇到了许多问题,所幸在自己的坚持不懈下基本都得到了解决,今天就记录一下怎么设置缓存数据并且不覆盖吧,如果有错误的地方麻烦大家指正,互相学习一下! 这是官方的关于缓存的说明,它会覆盖掉之前的内容。我还是直接上源码吧