2010-01-25 17 views
34

हमारी कंपनी ने हाल ही में विंडोज एक्सपी से विंडोज 7 एंटरप्राइज़ में अपग्रेड किया है। जेडीके इंस्टॉलेशन अब उपयोगकर्ता निर्देशिका के पूर्ण पथ पर उपयोगकर्ता.home सेट नहीं कर रहा है, लेकिन इसके बजाय user.home को %userprofile% पर सेट कर रहा है। यह ग्रहण, मेवेन इत्यादि जैसे अनुप्रयोगों के साथ कई मुद्दों का कारण बन रहा है। अब मुझे प्रत्येक एप्लिकेशन के लिए JVM में -Duser.home सेट करना होगा। क्या किसी और को भी इसका अनुभव हुआ है? क्या इसे ठीक करने का कोई तरीका है? क्या यह विंडोज 7 एंटरप्राइज़ की स्थापना से संबंधित होगा? मैंने 1.5 जेडीके और 1.6 जेडीके की कोशिश की है।जावा 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... 

अद्यतन:

Andreas_D से बग मुझे पता चला के लिए लिंक का उपयोग करना:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Desktop का मूल्य है % USERPROFILE मेरी स्थापना पर% \ डेस्कटॉप विंडोज 7 एंटरप्राइज़ का।

जब मैं इस कुंजी का मान C:\Users\politesp\Desktop पर बदलता हूं, तो मेरा उपयोगकर्ता। सही ढंग से हल हो जाता है। कुछ पता है कि ऐसा क्यों हो रहा है?

+2

यह माना जाता है कि यह जावा 8 में तय किया गया है .... http://bugs.sun.com/view_bug.do?bug_id=4787931 – Pureferret

उत्तर

25

रजिस्ट्री पर स्थित कुंजी के बहुमत:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ एक्सप्लोरर \ शैल फ़ोल्डर

% userprofile% के साथ शुरू हुआ। मैंने सी: \ उपयोगकर्ता \ myusername से शुरू करने के लिए% userprofile% के साथ शुरू की गई सभी रजिस्ट्री कुंजियों को अद्यतन किया। मैंने विंडोज एक्सपी पर सत्यापित किया है कि पथ वास्तव में हार्ड कोड किए गए हैं और% userprofile% का उपयोग नहीं किया जाता है। आईटी लोगों ने उल्लेख किया कि विंडोज 7 के भीतर उपयोग की जाने वाली डिफ़ॉल्ट प्रोफ़ाइल के कारण रजिस्ट्री कुंजियों को% userprofile% का उपयोग करने के लिए डिफॉल्ट किया गया है। जेवीएम डेस्कटॉप पथ को हार्ड कोड करने की अपेक्षा करता है। यह पर्यावरण चर का मूल्यांकन नहीं करेगा।

आप रजिस्ट्री कुंजियों को एक-एक करके अपडेट कर सकते हैं या आप फ़ोल्डर को निर्यात कर सकते हैं और चाबियाँ बदल सकते हैं।

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

दिलचस्प है कि कितने लोग अभी भी याद करते हैं »इस रजिस्ट्री कुंजी का उपयोग न करें« वहां ध्यान दें;) – Joey

+0

आपके प्रश्न में अच्छा शोध, और उत्तर के लिए उत्कृष्ट अनुवर्ती। इस क्यू एंड ए के लिए इंटरनेट बेहतर है। – kevinarpe

10

ऐसा लगता है कि - किसी भी कारण से - %USERPROFILE% को किसी मान पर सेट नहीं किया गया है। यदि आप कमांड खोल पर echo %USERPROFILE% टाइप करते हैं तो आपको क्या मिलता है?

शायद यह एक ओएस सुविधा नहीं है लेकिन एक कॉन्फ़िगरेशन समस्या है। मेरी मशीन (Vista) पर %USERPROFILE% मेरे घर निर्देशिका के लिए हल करता है और यह जावा संपत्ति user.home

संपादित

यहाँ USERPROFILE और user.home के साथ एक Vista/Windows 7 मुद्दा है के लिए एक ही है: bug। का समाधान नहीं हो सकता है आपकी समस्या आप यह अनुमान लगा सकता है ..

+0

गूंज% USERPROFILE% प्रिंट करता है सी: \ उपयोगकर्ता \ politesp –

+0

शायद यह केस संवेदनशील है ? क्या आपने userprofile के बजाय USERPROFILE को आजमाया है? कम से कम VISTA पर – kpolice

+0

, पर्यावरण परिवर्तनीय नाम केस संवेदनशील नहीं हैं। और मुझे सच में संदेह है कि एमएस ने विंडोज 7 के साथ बदल दिया है ... –

15

यह जावा में एक लंबे समय से बकाया बग के कारण है: http://bugs.sun.com/view_bug.do?bug_id=4787931

+0

मैंने आज भी इस बग को देखा। अविश्वसनीय है कि उन्होंने यह विकल्प किया और शिकायत करने वाले सभी को नहीं सुना ... –

10

तक जावा 8, जहां इस तय हो गई है, समाधान में जोड़ने के लिए है यहाँ आप कैसे निर्यात और रजिस्ट्री कुंजी आयात कर सकते हैं
_JAVA_OPTIONS: -Duser.home =% HOMEDRIVE HOMEPATH%

या कमांड लाइन में %%: वातावरण चर में
सेट _JAVA_OPTIONS = -Duser.home =% HOMEDRIVE %% HOMEPATH%

+०१२३५१६४१०६१

मैं इस पेज के टिप्पणी में समाधान देखा: http://www.timehat.com/javas-user-home-is-wrong-on-windows/

1

रजिस्ट्री में सिंगल स्ट्रिंग मान 2 प्रकार "REG_SZ" और "REG_EXPAND_SZ" है और वे "%data%" तार अलग तरह से व्यवहार करते हैं।

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

प्रकार "REG_EXPAND_SZ""%data%""data" वातावरण चर मूल्य बदल दे अन्यथा परिभाषित नहीं संकल्प जगह लेता है।

विंडोज जीयूआई पर्यावरण चर संपादन संपादन एप्लेट सही प्रकार का चयन करता है अगर "%name%" मान फ़ील्ड में दिखाई देता है।

यह समस्या रजिस्ट्री में लिखते समय एक इंस्टॉलर को खराब विकल्प बनाने की तरह लगता है।

संबंधित मुद्दे