2010-01-25 20 views
34

Şirketimiz son zamanlarda Windows XP'den Windows 7 Enterprise'a yükseltilmiştir. JDK yüklemesi, kullanıcı dizininin tam yoluna user.home ayarlamamaktadır, bunun yerine user.home değerini %userprofile% olarak ayarlamaktadır. Bu, Eclipse, Maven, vb. Gibi uygulamalarla ilgili birçok soruna neden oluyor. Şimdi her uygulama için JVM'de -Duser.home ayarlamam gerekiyor. Bunu başkası yaşadı mı? Bunun için bir düzeltme var mı? Bu, Windows 7 Enterprise'ın yüklenmesi ile ilgili olabilir mi? 1.5 JDK ve 1.6 JDK denedim.Java user.home,% userprofile% olarak ayarlanmış ve çözümlenmemiştir.

Özelliklerin listesi aşağıdadır. user.home Not:

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

Güncelleme: keşfettim Andreas_D gelen hatadan bağlantıyı kullanarak

:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop değeridir % userprofile benim yüklemesinde% \ Desktop Windows 7 Enterprise.

Bu anahtarın değerini C:\Users\politesp\Desktop olarak değiştirdiğimde, kullanıcım.home doğru şekilde çözülür. Bunun neden olduğu hakkında bir fikrin var mı?

+2

Bu, Java 8'de düzeltildi ... http://bugs.sun.com/view_bug.do?bug_id=4787931 – Pureferret

cevap

25

bulunan kayıt defteri anahtarlarının çoğunluğu:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell Klasörler

,% userprofile% ile başladı. C: \ Users \ myusername ile başlamak için% userprofile% ile başlayan tüm kayıt defteri anahtarlarını güncelledim. Windows XP'de yolların aslında kodlanmış ve% userprofile% kullanılmadığı doğrulandı. BT yöneticileri, Windows 7'de kullanılan bir varsayılan profil nedeniyle% userprofile% kullanmak için varsayılan kayıt defteri anahtarlarının söz konusu olduğunu belirtti. JVM, Masaüstü yolunun sabit kodlanmış olmasını bekler. Ortam değişkenlerini değerlendirmez.

Kayıt defteri anahtarlarını tek tek güncelleyebilir veya klasörü dışarı aktarabilir ve tuşları değiştirebilirsiniz.

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

Pek çok insanın hala ne kadar çok ilgisini çektiğini merak ediyorum. »Bu kayıt anahtarını kullanmayın« buralarda dikkat edin;) – Joey

+0

Sorunuzda güzel bir araştırma ve yanıt için mükemmel bir takip. İnternet bu soru-cevap için daha iyidir. – kevinarpe

10

Bana öyle geliyor - her ne sebeple olursa olsun - %USERPROFILE% bir değere ayarlanmamış. Komut kabuğuna echo %USERPROFILE% yazarsanız ne alırsınız? Belki bir işletim sistemi değil, bir yapılandırma sorunu olabilir. Benim makinede (Vista) On %USERPROFILE% benim ev dizinine giderir ve Java özelliği user.home

Düzenleme

İşte USERPROFILE ve user.home ile Vista/Windows7 mesele için aynı: bug. Sorunun size bir fikir verebilir çözmek olmayabilir ..

+0

echo% USERPROFILE%, C: \ Users \ politesp –

+0

yazdırıyor, büyük/küçük harfe duyarlı ? userprofile yerine USERPROFILE'i denediniz mi? – kpolice

+0

en azından VISTA'da, ortam değişken isimleri büyük/küçük harfe duyarlı değildir. Ve MS'in Windows 7 ... –

10

, çözüm bu eklemektir Burada kayıt defteri anahtarlarını ve içe nasıl olduğunu
_JAVA_OPTIONS: -Duser.home =% homedrive homepath%

veya komut doğrultusunda

%%: ortam değişkenleri
grubu _JAVA_OPTIONS = -Duser.home =% homedrive %% homepath%

Bu sayfanın yorumlarında çözümünü gördü: kayıt http://www.timehat.com/javas-user-home-is-wrong-on-windows/

1

Tek dize değerleri 2 tip "REG_SZ" ve "REG_EXPAND_SZ" var ve onlar farklı "%data%" dizeleri davranın. bir çözüm gerçekleşir aksi tanımlanmış ise

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

Tip "REG_EXPAND_SZ""%data%""data" ortam değişkeni değerini değiştirir.

Windows GUI ortam değişkeni düzenleme uygulamaları, değer alanında "%name%" görüntülendiğine bağlı olarak doğru türü seçer.

Bu sorun, kayıt defterine yazarken kötü seçimler yapan bir yükleyici gibi görünüyor.

İlgili konular