मैं एक JSP डीबग कैसे कर सकता हूं?


26

मैं एक परियोजना के लिए एक JSP को संपादित करने की कोशिश कर रहा हूँ और मुझे अपने सर्वर से अनुरोध करने पर JSP में कहीं न कहीं NullPointerException मिल रही है।

मेरा वेब सर्वर (JBoss) अपवाद की रिपोर्ट कर रहा है, लेकिन यह मुझे एक फर्जी लाइन नंबर दे रहा है। यह रिपोर्ट कर रहा है कि अपवाद रेखा 702 पर हुआ था, लेकिन मेरा JSP केवल 146 लाइनें लंबा है, इसलिए मैं यह पहचानने में असमर्थ हूं कि कौन सी रेखा घुट रही है।

JSP में त्रुटियों को डीबग करने के लिए कुछ अच्छी तकनीकें क्या हैं? मैं अपने IDE के रूप में IntelliJ 9 अल्टीमेट का उपयोग कर रहा हूं।

धन्यवाद


1
Stackoverflow.com
Abimaran Kugathasan

1
ठीक है। क्षमा करें, मैं StackOverflow.com और Programmers.StackExchange.com के बीच के अंतर पर पूरी तरह से स्पष्ट नहीं हूँ। मुझे यकीन नहीं है कि कौन से सवाल कहाँ हैं .. मैंने प्रोग्रामर के लिए FAQ पढ़ा है ।stackexchange लेकिन यह थोड़ा अस्पष्ट है।
ampersandre

3
वास्तव में मुझे यकीन नहीं है कि यह स्टैक ओवरफ्लो पर ठीक होगा। हालांकि यह काफी विशिष्ट है लेकिन पर्याप्त ठोस विवरण (समस्या की प्रकृति के कारण) नहीं है। आप क्या कर रहे हैं के बाद तकनीक डीबगिंग है जो इस साइट के लिए विषय पर होना चाहिए।
क्रिसएफ Chris

क्या आपने अपनी jsp के अंदर कोई jsps शामिल किया है? इस तरह लाइन नंबर बढ़ सकता है। प्रश्न को
स्टैकओवरफ्लो में

एक तकनीक संकलन फ़ाइलों को देख रही है: codeinventions.blogspot.com/2014/08/…
सुरेश अत्ता

जवाबों:


29

कई विकल्प हैं जो आपकी मदद कर सकते हैं:

  1. यह उत्तर वास्तव में जेएसपी को विशेष रूप से डीबग करने का तरीका बताता है: /programming/33739/jsp-debugging-in-intellij-idea । जब मैंने JSP, JBoss और IntelliJ का उपयोग कर रहा था, तो मैंने कभी भी अगले तीन सुझावों का पालन नहीं किया, इसलिए मैंने ऐसा करने की कोशिश नहीं की ...

  2. याद रखें कि जेएसपी कक्षाओं के लिए संकलित हैं। जब यह रेखा 702 कहती है, तो इसका मतलब संकलित वर्ग में होता है। यदि आपके पास है test.jsp, तो कक्षा का नाम संभवतः है test_jsp, इसलिए अपनी JBoss कार्य निर्देशिका खोलें और खोजें test_jsp.java(एक बार जब आप सही निर्देशिका पाते हैं, तो आप देखेंगे कि निर्देशिका संरचना आपकी JSP निर्देशिका संरचना से मेल खाती है)। जब भी मेरे पास एक जेएसपी अपवाद था, तो मुझे लाइन आसानी से मिल सकती थी और आमतौर पर जेएसपी में इसी लाइन से मेल खाती थी।

  3. ब्रेकपॉइंट एक जेएसपी से बुलाए गए जावा कक्षाओं में ठीक काम करते हैं । तो, शायद आप जावा स्क्रिप्ट कोड को स्थानांतरित कर सकते हैं जो आपके जेएसपी में एक वर्ग में है और प्रवेश बिंदु से डीबग करता है। भविष्य में आप अपने तर्क को पुनर्व्यवस्थित करने की आदत भी बना सकते हैं, ताकि इसका अधिकांश हिस्सा उस वर्ग में हो जिसे JSP से बुलाया जा रहा है, और JSP सरल, सीधा और उम्मीद है कि कोई अपवाद नहीं फेंक रहा है। यह वैसे भी अच्छा अभ्यास है।

  4. बेहतर अभी तक, जावा कक्षाओं में सभी (या वस्तुतः सभी) जावा तर्क को हटा दें, HTML और JSP टैग के लिए JSP को छोड़कर। मुझे पता है कि यह अभी संभव नहीं है, लेकिन फिर, इस तरह की समस्याओं से बचने के लिए यह एक अच्छा विचार है।


2
JSP से तर्क निकालने के लिए +1। JSP / सर्वलेट सर्वोत्तम प्रथाओं में मॉडल 2 (MVC) वास्तुकला के साथ: oracle.com/technetwork/articles/javase/servlets-jsp-140445.html
bunglestink

धन्यवाद! विकल्प 4 आदर्श है, मैं सहमत हूं, लेकिन हमारे पास इस परियोजना में महान दृश्य / नियंत्रक पृथक्करण नहीं है।
एम्परसेंड्रे

1
आइटम # 2 के लिए भी +1। मुझे कोई अंदाजा नहीं था कि *_jsp.javaकक्षाएं कहां लगानी हैं।
स्कॉटीसियस

2
JSP के सभी तर्क को उस परियोजना पर हटा देना, जिसमें हजारों JSP हैं, प्रत्येक में कई हजार पंक्तियों की स्क्रिप्टलेट हैं ... नहीं, धन्यवाद, बस हैशटेबल्स और वैक्टर को डिबग करना चाहते हैं। FML :-( </ rant> अच्छा जवाब हालांकि
पीटर Peráč

-1

आप एक JSP कोड की तरह आसानी से एक JSP पेज डिबग कर सकते हैं:
"एक JSP फाइल एक जावा क्लास को डीबगिंग की तरह ही है, लेकिन अधिकांश फीचर्स (वॉच, इंस्पेक्ट, इत्यादि) लागू नहीं होते हैं। वेरिएबल के मान प्राप्त करने का एकमात्र तरीका है। वेरिएबल्स दृश्य है। "
नीचे दिए गए लिंक देखें:
https://www.laliluna.de/articles/posts/debugging-jsp-java-putorial.html


4
एक पुराने प्रश्न का उत्तर देते समय, जिसके पास पहले से ही एक अच्छा उत्तर है, कृपया अपने उत्तर में और अधिक विवरण जोड़ें, ताकि आप किसी ऐसी चीज को संबोधित कर सकें जो पहले से ही कवर नहीं थी।
कुटकी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.