2009-06-03 7 views
8

मैं वर्तमान में ल्यूसीन-आधारित खोज एपीआई की सेवा के लिए अपाचे टॉमकैट 5.5.16 का उपयोग कर रहा हूं।मेरी सर्वलेट स्टैकट्रैक मेरी कक्षाओं के लिए "अज्ञात स्रोत" क्यों दिखाती है?

हाल ही में मेरे सर्वलेट वर्ग के अंदर कुछ नलपोइंटर अपवाद हैं। कक्षा को com.my_company.search.servlet.SearchServlet कहा जाता है।

कुछ प्रकार के इनपुट के साथ मैं नियमित रूप से एक NullPointerException बना सकता हूं, लेकिन मुझे यह पता लगाने में परेशानी हो रही है कि यह वास्तव में कहां है।

StackTrace इंगित करता है कि बग यहाँ उत्पन्न होता है:

com.my_company.search.servlet.SearchServlet.doGet(Unknown Source)

स्रोत और इस वर्ग के लिए .class फ़ाइलें सभी में है:

$TOMCAT_HOME/webapps/my_servlet/WEB-INF/classes/com/my_company/search/servlet/

मेरा प्रश्न है, कैसे क्या मैं टॉमकैट को और अधिक वर्णनात्मक त्रुटि स्थानों के साथ प्रदान कर सकता हूं?

उत्तर

21

टोमकैट आपको अधिक विस्तृत जानकारी प्रदान नहीं कर सकता है जब तक कि प्रश्नों की कक्षाएं डिबगिंग जानकारी के साथ संकलित नहीं की जातीं। इस डीबगिंग जानकारी के बिना, JVM यह निर्धारित नहीं कर सकता कि त्रुटि किस कोड पर हुई है।

संपादित करें: आप निर्दिष्ट करके इस जानकारी को शामिल करने संकलक पूछ सकते हैं -goption जब कमांड लाइन पर javac चल रहा है। आप Javac Ant task के debug पैरामीटर का उपयोग करके इस विकल्प को भी निर्दिष्ट कर सकते हैं।

+0

+1, और इसी तरह संकलित करने के लिए ग्रहण का उपयोग कर यदि चर्चा की गई कल http://stackoverflow.com/questions/939194/preserving-parameter-argument-names-in-compiled-: उन्हें विकल्प -g साथ संकलन जावा-क्लास – Pool

+0

+1, जो अतिरिक्त टिप्पणी के साथ आपको संभवतः अपनी डूगेट विधि को दोबारा करने के बारे में सोचने की आवश्यकता है - यदि आपकी विधियां काफी छोटी हैं और पर्याप्त रूप से कम करती हैं, तो सिर्फ यह जानकर कि कौन सा इनपुट शून्य था और यह किस विधि में पर्याप्त था । (लेकिन डीबगिंग के साथ संकलित करना निश्चित रूप से आपकी तत्काल समस्या का उत्तर है।) – Jared

+0

धन्यवाद यह बेहद सहायक था। मैंने बिल्ड फ़ाइल के जावैक सेक्शन में डीबग = सच जोड़ा और यह पूरी तरह से काम किया। और हाँ। मेरे डूगेट = को दोबारा करने के लिए मुझे कोई सवाल नहीं है =) – zorlack

0

स्थान अज्ञात स्रोत तब हो सकता है जब जेआईटी कंपाइलर ने आपकी कक्षा को अनुकूलित किया हो। उस समय स्रोत जानकारी खो जाती है। मूल स्थान प्राप्त करने के लिए, सर्वर को पुनरारंभ करें और अपना परीक्षण पुनः प्रयास करें। अधिकांश समय आपको अपने स्रोत

4

में स्थान प्राप्त होगा, आपको अपनी कक्षाओं में डिबगिंग जानकारी जोड़नी होगी।

javac -g YourServlet.java 
संबंधित मुद्दे