मेरे पास bigloo योजना कार्यात्मक भाषा में लिखा गया एक पार्सर है जिसे मुझे जावा क्लास में संकलित करने की आवश्यकता है। पूरे पार्सर को एक समारोह के रूप में लिखा जाता है। दुर्भाग्य से यह जेवीएम कंपाइलर को "विधि बहुत बड़ी" चेतावनी फेंकने का कारण बन रहा है और बाद में "लोकलवर में दूर लेबल" त्रुटि देता है। क्या कोई संभावित तरीका है जहां मैं इस त्रुटि को बाधित कर सकता हूं? मैंने कहीं DontCompileHugeMethods विकल्प के बारे में पढ़ा है, क्या यह काम करता है? समारोह does not को लग बंटवारे मेरे लिए :(एक व्यवहार्य विकल्प हो करने के लिए !!जावा संकलन में "विधि बहुत बड़ी" त्रुटि को कैसे बाधित करें?
उत्तर
वहाँ किसी भी संभव तरीके से जहां मैं इस त्रुटि को नाकाम कर सकते हैं?
खैर, यह संकलक त्रुटि की जड़ है कि बाइटकोड फाइलों के प्रारूप में कठोर सीमाएं हैं। इस मामले में, समस्या यह है कि एक विधि में बाइटकोड के 65536 बाइट्स शामिल हो सकते हैं। (JVM spec देखें)
एकमात्र कामकाज को विभाजित करना है विधि
विधि को संबंधित संचालन या विभाजित उपयोगिताओं में अलग से विभाजित करें।
ठीक है, मामला यहां थोड़ा अलग है, विधि में केवल एक समारोह कॉल होता है। अब इस फ़ंक्शन में एक विशाल पैरामीटर सूची है (वास्तव में संपूर्ण पार्सर !!)। तो मुझे कोई संकेत नहीं है कि इसे कैसे विभाजित किया जाए !! – Aditya
आप निश्चित रूप से पैरामीटर की विशाल सूची को अन्य तरीकों से पारित कर सकते हैं, है ना? – Sid
खैर, मामला कुछ अलग यहाँ, विधि केवल एक एकल समारोह कॉल के होते है। अब यह फ़ंक्शन में एक विशाल पैरामीटर सूची है ( वास्तव में पूरे पार्सर !!)। तो मैं कोई संकेत नहीं है कि इसे कैसे विभाजित करें !!
रास्ता को विभाजित करने के इस तरह के एक जानवर हो सकता है:
- अपने मापदंडों के लिए डेटा धारक वस्तुओं को परिभाषित (अपने डेटा मॉडल की सत्तामीमांसा के अनुसार वस्तुओं में मापदंडों के सेट रखे),
- अपने स्वयं के संदर्भ में उन डेटा धारक वस्तुओं का निर्माण
- कार्य करने के लिए पैरामीटर वस्तुओं पारित
त्वरित और गंदा: निरुपित अल अपने पैरामीटर की शुरुआत में एक ही नाम के वर्ग चर के लिए अपने पैरामीटर (आपको अपने पैरामीटर का नाम बदलना होगा) और अपने फ़ंक्शन को टुकड़ों में चिपकाना शुरू करें और उन टुकड़ों को फ़ंक्शंस में रखें। यह गारंटी देनी चाहिए कि आपका कार्य मूल रूप से उसी अर्थशास्त्र के साथ काम करेगा।
लेकिन, यह सुंदर कोड नहीं लेगा!
- 1. जावा लंबी संख्या बहुत बड़ी त्रुटि?
- 2. फ्रेम() में त्रुटि: आकृति मार्जिन बहुत बड़ी
- 3. जावा जेनरिक संकलन त्रुटि
- 4. बहुत बड़ी यादृच्छिक संख्याएं उत्पन्न करना जावा
- 5. BigDecimal.movePointRight() बहुत बड़ी संख्या
- 6. बहुत बड़ी फ़ाइल
- 7. अनुरोध इकाई बहुत बड़ी
- 8. एकाधिक जेनेरिक प्रकारों को कैसे बाधित करें?
- 9. f # बहुत धीमी संकलन
- 10. एक बहुत बड़ी फ़ाइल
- 11. सेलेनियम 2: पृष्ठ लोड को बाधित करें
- 12. बड़ी समाप्ति के लिए टैब पूर्णता बाधित
- 13. फ़ाइल अपलोड बहुत बड़ी
- 14. बहुत बड़ी एक्सएमएल फाइलें संपादित करें
- 15. ऑटोमैपर .मेम्बर विधि संकलन त्रुटि। अमान्य अधिभार
- 16. HTTP बहुत बड़ी फ़ाइल डाउनलोड करें
- 17. मैं सर्वरस्केट स्वीकार() विधि को कैसे बाधित कर सकता हूं?
- 18. बूस्ट :: थ्रेड को कैसे रोकें/बाधित करें?
- 19. असफल $ (खोल) कमांड को कैसे बाधित करें
- 20. java.util.Scanner को कैसे बाधित करें अगलीलाइन कॉल
- 21. बहुत बड़ी पोस्टग्रेएसक्यूएल डेटाबेस तालिका को कुशलतापूर्वक
- 22. जावा जेनरिक 'असंगत प्रकार' संकलन-समय त्रुटि
- 23. jQuery UI तत्व बहुत बड़ी
- 24. टाइमआउट और मेमोरी त्रुटि के बिना बहुत बड़ी सीएसवी फ़ाइल को संसाधित करें
- 25. डाटाबेस डिजाइन बहुत बड़ी मात्रा में डेटा
- 26. त्रुटि संकलन
- 27. अजीब मोनो संकलन त्रुटि
- 28. बड़ी परियोजनाओं को संभालने में बहुत धीमी गति से
- 29. "समान मिटा" संकलन त्रुटि
- 30. शक्तियों को बड़ी (बड़ी) फ़ाइल
यह पूछने के बजाय कि 'DontCompileHugeMethods' काम करता है, तो आप इसे स्वयं क्यों नहीं देखते? वैसे भी, विशाल विधियां होने का वास्तव में एक बुरा अभ्यास है। केवल समस्या को हल करने के लिए कुछ सहायक कार्यों को बनाने का प्रयास करें, लेकिन अपना कोड अधिक पठनीय और रखरखाव करने के लिए। – pakore