2012-10-03 27 views
5

आश्चर्य है कि अगर कोई गुरु बाहर निकल सकता है तो निम्नलिखित यादृच्छिक रूप से क्यों होता है। क्या एक यादृच्छिक प्रतीत होता है -वेब अनुप्रयोग में यादृच्छिक NoClassDefFound त्रुटि

हम एक वेब अनुप्रयोग हम घाट 6.1.26 में तैनात JRE 1.7_03

हर समय है, लेकिन साथ एक लिनक्स स्थापना पर चल रहा है हर अब और फिर, जब घाट शुरू होता है वर्ग (हमारी परियोजना से) NoClassDefFound त्रुटि का स्रोत प्रतीत होता है। अगर हम जेटी को पुनरारंभ करते हैं तो समस्या गायब हो जाती है।

ऐसा लगता है कि त्रुटि का जड़ पर कक्षाएं जेएक्सबी एनोटेशन के माध्यम से पॉप्युलेट की जाती हैं।

आवृत्ति के बारे में अधिक जानकारी देने के लिए ऐसा लगता है कि यह 1/50 बार होता है, अगर ऐसा होता है।

मुझे यह जानने में दिलचस्पी होगी कि इस त्रुटि के लिए कैसे और क्यों।

+2

क्या आपके पास अपने रनटाइम क्लासपाथ में एक से अधिक जैक्सबी lib है? अपने संकलन/बिल्ड-टाइम क्लासपाथ की तुलना करें, अपने रनटाइम के साथ libs। क्या कोई अंतर है? – Kent

उत्तर

1

सुनिश्चित नहीं है कि यह मदद कर सकता है लेकिन हम जेटी 8 और जावा 6 के साथ एनोटेशन समस्याओं में भाग गए। एक लंबी कहानी कम करने के लिए, उस संस्करण में एनोटेशन प्रसंस्करण libism पर भरोसा प्रतीत होता है उदा। बाइटकोड निरीक्षण। इसलिए हम

  • साथ सावधान रहना चाहिए कि हम क्या के साथ हमारे वर्गों संकलन है (उदाहरण के लिए, JDK संस्करण, आदि ...)
  • है कि हम अपने निर्भरता के माध्यम से कई एएसएम/javassist librairies खींच नहीं है और लोड हो रहा है खत्म गलत एक

मैं जिस तरह से जेट्टी के साथ से परिचित 6 और JAXB प्रक्रिया एनोटेशन नहीं हूँ, लेकिन मैं वास्तव में हैरान आप प्राप्त कर सकते हैं कर रहा हूँ दोनों जावा 7. पर चल रहा है क्या आप जावा 6 के साथ कोड चलाने की कोशिश कर सकते हैं?

+0

मैं वास्तव में जावा 7 पर जेटी 6 चलाने की अनुशंसा नहीं करता, जावा 7 के साथ जेट्टी 7.6.x या 8.1.x का उपयोग करने के लिए बेहतर है, और उस पर जावा 7 का सबसे अंतिम पैच स्तर –