2009-09-03 10 views
6

मैं स्वचालित धारावाहिक संस्करण आईडी उत्पन्न करके कुछ कक्षाओं के लिए कुछ चेतावनियों को हटाना चाहता हूं। ग्रहण में, यह करने के लिए तुच्छ है - आईडीई स्वचालित रूप से एक उत्पन्न कर सकते हैं और इसे कक्षा में जोड़ सकते हैं। हालांकि, मुझे NetBeans में यह कार्यक्षमता दिखाई नहीं दे रही है। क्या यह उपलब्ध है? अगर ऐसा है, तो यह कहां है? यदि नहीं, तो क्या कोई प्लगइन है जो इसे सक्षम कर सकता है?क्या नेटबीन जावा क्लास के लिए स्वचालित सीरियल संस्करण आईडी उत्पन्न कर सकता है?

उत्तर

9

वास्तव में है कि "समस्या" करने के लिए अपने समाधान लिए किया गया था कि चेतावनी अपने प्रोजेक्ट विन्यास में (मैं ग्रहण का उपयोग लेकिन मुझे लगता है कि NetBeans के लिए एक ही है) के रूप में यह IMHO एक गलत चेतावनी है निष्क्रिय: नहीं होने एक serialVersion सबसे सुरक्षित विकल्प है क्योंकि JVM लॉन्च पर अद्वितीय है (क्लास के हैश की तरह कुछ) इसे स्पष्ट रूप से जोड़ते समय बोझ इसे अपडेट करने के लिए देखभाल करने के लिए यदि केवल और यदि आपने अपने कोड में असंगत परिवर्तन किए हैं ।

तो, अगर आप इस बारे में परवाह नहीं है, यह बेहतर है कि मूल्य (इस तरह के संस्करण के साथ यह केवल संगत है सुनिश्चित करें के लिए संगत हैं से बचने के लिए है, लेकिन कुछ झूठी सकारात्मक के साथ: यह सोचता है कि संगत नहीं है, लेकिन असल में यह होगा) वहां एक निश्चित मूल्य डालने की बजाय आप (संभवतः, मेरे मामले में) आवश्यक होने पर अपडेट करना भूल जाते हैं, जिससे वास्तविक वैधता त्रुटियां होती हैं (झूठी-नकारात्मक: यह सोचती है कि यह संगत है लेकिन यह नहीं है)।

+3

यह इस बात पर निर्भर करता है कि आप क्रमबद्धता का उपयोग कैसे करते हैं। यदि आप अलग-अलग जेवीएम में कक्षाओं को क्रमबद्ध करेंगे, जो कि एक जेवीएम से दूसरे में है, जो असंगतताओं का कारण बन सकता है। – Yishai

+0

ऐसा लगता है कि यह दृष्टिकोण मेरे वर्तमान प्रोजेक्ट पर सबसे अच्छा काम करेगा, लेकिन मुझे नेटबीन में हर जगह इस चेतावनी को बंद करने के लिए कोई जगह नहीं दिखाई दे रही थी (और बहुत सारी दमन चेतावनी एनोटेशन खराब लगती है)। –

+0

और मैं यह पता लगाने के लिए कर रहा था ... –

5

मैन्युअल रूप से करने के लिए यह छोटा है, जब तक कि आपको मौजूदा धारावाहिक उदाहरणों के साथ संगत रहने की आवश्यकता न हो। बस वर्ग में इस लाइन को कॉपी:

private static final long serialVersionUID = 1L; 

नोट बिल्कुल serialVersionUID की कोई आवश्यकता कक्षाओं में अद्वितीय होने की नहीं है।

+0

हालांकि यह एक अच्छा सुझाव है, मैं के रूप में यह है कि महत्वपूर्ण इस विशेष परियोजना पर है करने के लिए नहीं है चेतावनी को अनदेखा करने का फैसला किया। मुझे बस चेतावनी दिखाई नहीं दे रहा था। –

5

ऐसा लगता है कि नेटबीन इस सुविधा का समर्थन नहीं करता है, लेकिन प्लग-इन करता है।

कृपया

link 1, link 2 और link 3

1

पर एक नज़र Netbeans में इन चेतावनियों को निष्क्रिय करने के लिए है:

  1. ओपन: टूल्स -> विकल्प
  2. ओपन: संपादक -> संकेत टैब
  3. भाषा का चयन करें: जावा
  4. सही का निशान हटाएँ स्टैंडर्ड javac चेतावनी -> क्रमबद्धता
  5. ठीक

मैं भी ~/.netbeans/6.8/var/कैश को साफ़ और कार्य सूची से चेतावनी स्पष्ट करने के Netbeans पुनः आरंभ करने के लिए किया था।

0

(उपयोगकर्ता कि जहां अब एक ही सवाल के लिए पूछने के लिए)
मैं nb7.4 का उपयोग कर रहा हूँ और
plugin
nb7.4 को मैं nb7.4 और काम में इसका परीक्षण किया nb6.5 से इस प्लगइन पाया कुंआ।
serialVersionUID
पर Servial संस्करण आईडी नज़र के अर्थ के लिए यदि आप इसे स्पष्ट रूप से जोड़ने जब तक आप अपने वर्ग धारावाहिक नहीं है आप परिवर्तन uid के बिना अपने वर्ग के लिए सभी परिवर्तन करने के बाद कहीं स्टोर कर सकते हैं: अगर आप क्लास ए serialize बनाने यह
अंत तो यह डेटाबेस पर
अंत की दुकान तो कक्षा एक बनाने और नहीं, पुराने वर्ग एक के साथ संगत को बदलने
जब कोई नया वर्ग एक वह समस्या है सकते हैं करने के लिए पिछले वर्ग एक से धारावाहिक वस्तु लोड करने का प्रयास ।

जब आप कक्षा एक बदल सकते हैं और यह पिछले वर्ग एक के साथ असंगत बनाने आप uid बदलने के लिए, इसलिए यदि किसी को लोड करने के लिए InvalidClassExceptions मिल जाएगा की कोशिश की है।

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