34 votes

Java user.home est défini sur% userprofile% et n'est pas résolu

Notre société a récemment mis à niveau à partir de Windows XP vers Windows 7 Entreprise. Installation du JDK n'est plus de la configuration de l'utilisateur.à la maison pour le chemin d'accès complet du répertoire de l'utilisateur, mais plutôt de réglage de l'utilisateur.la maison d' %userprofile%. C'est ce qui a causé beaucoup de problèmes avec des applications comme Eclipse, Maven, etc. J'ai maintenant à définir -Duser.la maison dans la JVM pour chaque application. Quelqu'un at-il vécu cela? Est-il un correctif pour cela? Serait-ce lié à l'installation de Windows 7 Enterprise? J'ai essayé le JDK 1.5 et la 1.6 JDK.

Voici la liste des propriétés. Note de l'utilisateur.maison:

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

Mise à jour:

En utilisant le lien pour le bug de Andreas_D j'ai découvert:

La valeur de HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop est %userprofile%\Desktop sur mon installation de Windows 7 Entreprise.

Lorsque je change la valeur de cette clé de C:\Users\politesp\Desktop, mon utilisateur.la maison est résolu correctement. Une idée de pourquoi ce qui se passe?

25voto

Dan Polites Points 2649

La majorité des clés de registre situé à:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Les dossiers

a commencé avec le dossier %userprofile%. J'ai mis à jour toutes les clés de registre qui a commencé avec l' %userprofile% pour commencer C:\Users\myusername. J'ai vérifié sur Windows XP que les chemins d'accès sont en fait codé en dur et qu' %userprofile% n'est pas utilisé. Le gars IL a mentionné que les clés de registre par défaut pour utiliser %userprofile% en raison d'un profil par défaut utilisé dans Windows 7. La JVM s'attend à ce que le Bureau de chemin pour être codés en dur. Il n'évaluera pas les variables d'environnement.

Vous pouvez mettre à jour les clés de registre, un par un, ou vous pouvez exporter le dossier et changer les touches. Voici comment vous pouvez exporter et importer les clés de registre:

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.

16voto

Brett Points 106

Cela est dû à un bogue en suspens depuis longtemps en Java: http://bugs.sun.com/view_bug.do?bug_id=4787931

11voto

Andreas_D Points 64111

Il me semble que, si pour quelque raison que ce soit - %USERPROFILE% n'a pas été réglé à une valeur. Qu'obtenez-vous si vous tapez echo %USERPROFILE% sur le shell de commande?

C'est peut-être pas un OS fonctionnalité, mais un problème de configuration. Sur mon ordinateur (Vista) %USERPROFILE% résout à mon répertoire home et il en va de même pour la propriété Java, user.home

Modifier

Voici une Vista/Windows7 problème avec le profil UTILISATEUR et l'utilisateur.maison: bug. Ne peut pas résoudre votre problème pourrait vous donner une idée..

10voto

Luka Bradeško Points 321

Jusqu'à Java 8 où cela est résolu, la solution consiste à l'ajouter dans les variables d'environnement:
_JAVA_OPTIONS: -Duser.home =% HOMEDRIVE %% HOMEPATH%

ou en ligne de commande:
set _JAVA_OPTIONS = -Duser.home =% HOMEDRIVE %% HOMEPATH%

J'ai vu la solution dans les commentaires de cette page: http://www.timehat.com/javas-user-home-is-wrong-on-windows/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X