मैं टॉमकैट एप्लिकेशन चला रहा हूं, और मुझे कुछ समय मूल्य प्रदर्शित करने की आवश्यकता है। दुर्भाग्यवश, समय एक घंटे दूर आ रहा है। मैंने इसमें देखा और पाया कि मेरा डिफ़ॉल्ट टाइमज़ोन इस पर सेट किया जा रहा है:जावा टाइम जोन गड़बड़ है
sun.util.calendar.ZoneInfo[id="GMT-08:00",
offset=-28800000,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
प्रशांत समय क्षेत्र की बजाय। यह तब संकेत दिया जाता है जब मैं डिफ़ॉल्ट समय क्षेत्र display name मुद्रित करने का प्रयास करता हूं, और यह "जीएमटी -08: 00" आता है, जो मुझे इंगित करता है कि यह यूएस प्रशांत समय क्षेत्र में सही ढंग से सेट नहीं है। मैं उबंटू हार्डी हेरॉन पर चल रहा हूं, जिसे गट्सी गिब्बन से अपग्रेड किया गया है।
क्या कोई कॉन्फ़िगरेशन फ़ाइल है जो मैं जेआरई को सभी संबंधित डेलाइट बचत समय की जानकारी के साथ प्रशांत का उपयोग करने के लिए कह सकता हूं? मेरी मशीन पर समय सही ढंग से दिखाता है, इसलिए यह एक ओएस-व्यापी गलत कॉन्फ़िगरेशन प्रतीत नहीं होता है।
ठीक है, यहां एक अपडेट है। एक सहकर्मी ने सुझाव दिया कि मैं अपने/etc/प्रोफ़ाइल में JAVA_OPTS को "-Duser.timezone = यूएस/प्रशांत" शामिल करने के लिए अद्यतन करता हूं, जिसने काम किया (मैंने CATALINA_OPTS भी देखा, जिसे मैंने भी अपडेट किया)। असल में, मैंने नए/etc/प्रोफ़ाइल का उपयोग करने के बजाय चर में परिवर्तन को निर्यात किया है (बाद में रीबूट परिवर्तनों को उठाएगा और मैं सुनहरा होगा)।
हालांकि, मुझे अभी भी लगता है कि एक बेहतर समाधान है ... जावा के लिए कहीं कॉन्फ़िगरेशन होना चाहिए जो कहता है कि यह किस समय का उपयोग कर रहा है, या यह टाइमज़ोन को कैसे पकड़ रहा है। अगर कोई ऐसी सेटिंग जानता है, तो यह बहुत ही अच्छा होगा, लेकिन अभी के लिए यह एक सभ्य कामकाज है।
मैं 1.5 का उपयोग कर रहा हूं, और यह निश्चित रूप से एक डीएसटी समस्या है। जैसा कि आप देख सकते हैं, समय क्षेत्र डेलाइट बचत का उपयोग नहीं करने के लिए सेट है। मेरा विश्वास यह है कि यह सामान्य रूप से विशिष्ट प्रशांत टाइमज़ोन की बजाय -8 ऑफसेट पर सेट होता है। चूंकि जेनेरिक -8 ऑफसेट में डेलाइट बचत जानकारी नहीं है, इसलिए यह निश्चित रूप से इसका उपयोग नहीं कर रहा है, लेकिन सवाल यह है कि, जब मैं शुरू होता हूं तो प्रशांत समय क्षेत्र का उपयोग करने के लिए जावा कहां कहूं? मैं एक प्रोग्रामेटिक समाधान की तलाश नहीं कर रहा हूं, यह एक विन्यास समाधान होना चाहिए।
+1: मैं बस इसे पूरी तरह अद्यतन उबंटू 9 .10 सर्वर पर चला गया। सूर्य जेडीके 1.6.0_15-बी03, सिस्टम यूएस/पूर्वी टाइमज़ोन के लिए स्थापना समय पर कॉन्फ़िगर किया गया है।/आदि/लोकलटाइम में/usr/share/zoneinfo/यूएस/पूर्वी की समान सामग्री शामिल है। जावा 15 मार्च, 2010 और 25 अप्रैल के बीच तिथियों के लिए गलत परिणाम उत्पन्न करता है। फ़ाइल को सिमलिंक के साथ/usr/share/zoneinfo/यूएस/पूर्वी में बदलने के बाद, अब मुझे सही परिणाम मिलते हैं। मुझे आश्चर्य है कि यह बग एक है) अभी भी खुला है, बी) पूरी तरह से अद्यतन उबंटू सर्वर (9 .10 - कर्मिक) को प्रभावित करता है। –
बग जावा संस्करण 7 (बी 72) में बंद के रूप में नोट किया गया है। – Raedwald
एक symlink करने के लिए/etc/localtime बदल रहा है; आप अधिक आधुनिक लिनक्स सिस्टम में चीजों को तोड़ने की उम्मीद कर सकते हैं (उदाहरण के लिए, जब पैकेज अपग्रेड हो जाते हैं, या संभवतः स्टार्टअप पर - मुझे संदेह है कि फ़ाइल की प्रतिलिपि में सिमलिंक से बदलने का कारण स्टार्टअप अनुक्रम और निर्भरताओं के साथ करना होगा (विशेष रूप से यदि/usr/एक अलग फाइल सिस्टम पर है) मुझे टीजेड पर्यावरण चर सेट करने के लिए और अधिक उपयोगी लगता है। –