मैंने इसमें जेपीनल और जेएलएबल सरणी के साथ एक रंग पैलेट बनाया है। सबसे पहले यह अच्छी तरह से काम किया, लेकिन फिर मैंने जेपीनेल से कुछ अन्य जेएलएबल्स लगाए और उन्हें कुछ घटनाएं जोड़ दीं।"तुलना विधि अपने सामान्य अनुबंध का उल्लंघन करती है!" - टिमॉर्ट और ग्रिडलाउट
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeLo(TimSort.java:747)
at java.util.TimSort.mergeAt(TimSort.java:483)
at java.util.TimSort.mergeCollapse(TimSort.java:410)
at java.util.TimSort.sort(TimSort.java:214)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at java.util.Collections.sort(Collections.java:217)
at javax.swing.SortingFocusTraversalPolicy.enumerateAndSortCycle(SortingFocusTraversalPolicy.java:136)
at javax.swing.SortingFocusTraversalPolicy.getFocusTraversalCycle(SortingFocusTraversalPolicy.java:110)
at javax.swing.SortingFocusTraversalPolicy.getFirstComponent(SortingFocusTraversalPolicy.java:435)
at javax.swing.LayoutFocusTraversalPolicy.getFirstComponent(LayoutFocusTraversalPolicy.java:166)
at javax.swing.SortingFocusTraversalPolicy.getDefaultComponent(SortingFocusTraversalPolicy.java:515)
at java.awt.FocusTraversalPolicy.getInitialComponent(FocusTraversalPolicy.java:169)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:380)
at java.awt.Component.dispatchEventImpl(Component.java:4731)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:116)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
मैं सब कुछ मैं पहली बार मैं यह त्रुटि आई के बाद किया है दूर करने के लिए, लेकिन अभी भी यह हो रही रखने की कोशिश की: अब मैं इस त्रुटि प्राप्त हो रही। जब मैं ग्रिडलाउट से लेआउट को किसी और चीज़ में बदलता हूं, तो त्रुटि गायब हो जाती है, लेकिन कोड बेकार हो जाता है। तो मुझे ग्रिडलाउट की आवश्यकता है। जब मैं उस जेपीनेल में सबकुछ किसी अन्य जेपीनेल में ले जाता हूं, तो त्रुटि भी दूर हो जाती है। लेकिन जब मैं पहली जेपीनल हटा देता हूं, तो त्रुटि वापस आती है।
वैसे, कार्यक्रम काम करता है, लेकिन यह हो रही त्रुटियों रखने के लिए pleasent नहीं है ...
संपादित करें: जब मैं कम से कम 225 रंग का उपयोग, वहाँ कोई त्रुटि है। मैं क्या हो रहा है के बारे में वास्तव में उत्सुक हूँ। किसी भी स्पष्टीकरण की सराहना की जाएगी ...
इसे देखें: http://stackoverflow.com/questions/7849539/comparison-method-violates-its- सामान्य-contract-java-7- केवल – mbelow
ध्यान दें कि यह एक बग नहीं है, लेकिन एक छेड़छाड़ को हटाने । छेड़छाड़ यह थी कि सरणी को सॉर्ट करने के लिए इस्तेमाल किए गए तुलनित्र में एक ज्ञात तर्क त्रुटि हो सकती है। जावा 7 के साथ एक चेक जोड़ा गया है, और यह जांच अब इस त्रुटि को आउटपुट करती है अगर तुलनित्र का गलत व्यवहार होता है। चूंकि यह समस्याएं पैदा कर सकता है (हालांकि यह अन्य हल करता है), जावा 7 में पिछली विधि (कोई तुलनात्मक सत्यापन नहीं) का उपयोग करने के लिए सरणी को मजबूर करने के लिए एक संपत्ति शामिल है। इस संदेश को जावा की नई रिलीज के साथ गायब होने की उम्मीद न करें। लाइब्रेरी डेवलपर्स को इसे अपने कोड में ठीक करना होगा। – mins