2008-08-29 28 views
37

में जेएसपी डिबगिंग क्या किसी को JSPइंटेलिजे आईडीईए में डीबग करने का तरीका पता है?इंटेलिजे आईडीईए

जब मैं अपने JSP फ़ाइलों में ब्रेकपॉइंट सेट करता हूं, तो उन ब्रेकपॉइंट्स कभी प्रभावी नहीं होते हैं। डीबगर कभी उन्हें हिट नहीं करता है। आईडीईए लगता है कि ब्रेकपॉइंट मान्य हैं। मुझे लाइन के बाईं ओर एक लाल बिंदु दिखाई देता है जहां मैं अपना ब्रेकपॉइंट डालता हूं।

मैंने इंटेलिजे फोरम in this post में पढ़ा है कि JSP फ़ाइलों को काम पर डिबगिंग के लिए वेब-इंफ के तहत होना चाहिए।

लेकिन फिर मैंने यह भी पढ़ा कि JSP वेब-इंफ के तहत रखी गई फ़ाइलों को उपयोगकर्ता द्वारा सीधे पहुंचाया नहीं जाएगा।

मुझे यकीन है कि जो वास्तव में सही है नहीं कर रहा हूँ।

+0

बस चेक किया - यह मेरे लिए काम करता है। इंटेलिजे 6.0.5 टॉमकैट चल रहा है 5. संसाधन फ़ोल्डर में जेएसपी, कुछ खास नहीं है। आपको अपनी कॉन्फ़िगरेशन के बारे में अधिक जानकारी देना होगा। एक साधारण प्रोजेक्ट बनाने का प्रयास करें और इसे विभिन्न टोमकैट/जो भी संस्करणों के साथ परीक्षण करें। – itsadok

+0

यदि ग्रहण: http: //codeinventions.blogspot.com/2014/08/how-to-debug-jsp-with-help-of-compiled.html –

उत्तर

0

आपके प्रश्न के दूसरे भाग के लिए ("वेब-इंफ के तहत रखी गई जेएसपी फाइलें उपयोगकर्ता द्वारा सीधे पहुंच योग्य नहीं होंगी") जो सही है। उपयोगकर्ताओं को वेब-आईएनएफ फ़ोल्डर सर्वलेट में जेएसपी फ़ाइलों तक पहुंचने की अनुमति देने के लिए और प्रत्येक जेएसपी पेज के लिए web.xml फ़ाइल में सर्वलेट-मैपिंग प्रविष्टियों को बनाने की आवश्यकता है।

29

Intellij में JSP डिबगिंग के लिए कुछ विन्यास इसी क्रम में होना चाहिए रहे हैं। तथ्य यह है कि इंटेलिज हमेशा आपको जेएसपी लाइन पर ब्रेकपॉइंट जोड़ने की इजाजत देता है, यह जरूरी नहीं है कि आपने जेएसपी डिबगिंग को कॉन्फ़िगर किया है। निम्नलिखित में मैं Intellij 8 कॉन्फ़िगरेशन का संदर्भ देता हूं, w.r.t. पिछले संस्करणों को आपको समान संचालन करने की आवश्यकता होगी क्योंकि अवधारणाएं समान हैं।

जेएसपी डीबगिंग को सक्षम करने के लिए आपको दो चरणों को करना होगा: अपनी प्रोजेक्ट में एक वेब एप्लिकेशन कॉन्फ़िगरेशन सेट करें और एक वेब एप्लिकेशन सर्वर कॉन्फ़िगरेशन जोड़ें।

वेब अनुप्रयोग कॉन्फ़िगरेशन: जेएसपी डीबगिंग करने के लिए, आपके पास अपनी प्रोजेक्ट संरचना में "वेब" पहलू होना चाहिए, जो सही वेब.एक्सएमएल फ़ाइल को इंगित करता है। आप जिस प्रकार की वेब अनुप्रयोग संरचना का उपयोग कर रहे हैं उसके आधार पर, पहलू को इंटेलिज द्वारा स्वचालित रूप से पहचाना जा सकता है (वैसे भी यह जांचने के लिए जाएं कि उसने क्या किया है) या आपको इसे मैन्युअल रूप से जोड़ना पड़ सकता है। "जावा ईई बिल्ड सेटिंग्स" टैब में याद रखें, "वेब फ़ेसेट विस्फोट निर्देशिका बनाएं" के रूप में सेट करने के लिए; यदि आप डुप्लीकेट नहीं चाहते हैं, तो एक चाल सिर्फ इसे सक्षम करने और आपकी पहले से मौजूद निर्देशिका को इंगित करने के लिए है।

(वेब) अनुप्रयोग सर्वर: "कॉन्फ़िगरेशन संपादित करें" पर जाएं, वहां आपको कॉन्फ़िगरेशन को एक एप्लिकेशन सर्वर में जोड़ना होगा, वेब सर्वर को किसी अन्य एप्लिकेशन के रूप में लॉन्च नहीं करना होगा। इस तरह इंटेलिज जेएसपी कॉल को रोक पाएगा। एप्लिकेशन सर्वर की सूची में, आपके पास डिफ़ॉल्ट, टोमकैट होना चाहिए। ऐसा करने से पहले स्थानीय टॉमकैट इंस्टॉलेशन सुनिश्चित करें, और उस पर इंगित करें कि वेब एप्लिकेशन सर्वर जोड़ते समय। आखिरी चाल "परिनियोजन" टैब पर जा रही है और उसी चरण में "परिनियोजन स्रोत" के रूप में चयन कर रहा है जिसे आपने पिछले चरण में कॉन्फ़िगर किया था।

यदि आप किसी अन्य वेब एप्लिकेशन सर्वर का उपयोग करना चाहते हैं, तो वही कॉन्फ़िगरेशन काम करता है, मैंने इसे नवीनतम कैचो राल रिलीज़ के साथ परीक्षण किया और डिबगिंग काम ठीक किया (यह पिछले इंटेलिज और राल संयोजनों के साथ नहीं था)।

यदि आप उपलब्ध अनुप्रयोग सर्वर की सूची में टोमकैट को जोड़ने के लिए नहीं देखते हैं, तो सामान्य इंटेलिज सेटिंग्स फलक में प्लगइन्स की जांच करें: नवीनतम रिलीज में, अधिक से अधिक कार्यक्षमता "प्लग करने योग्य" बन गई है, और यहां तक ​​कि बहुत बुनियादी कार्य अक्षम हो सकते हैं; इस प्लगइन को "टोमकैट एकीकरण" कहा जाता है।

अंत में, यह निश्चित रूप से नहीं सच है कि JSP फ़ाइलों डिबगिंग के नीचे होने की वेब-INF के नीचे होने की जरूरत है।

4

वैसे भी, आपको टॉमकैट को आईडीईए में लॉन्च करने की आवश्यकता है, न कि रिमोट टोमकैट से।

+1

इस संकेत के लिए धन्यवाद! जब मैं एक एमवीएन टोमकैट चलाता था तो मैं डीबग करने में असमर्थ था: रन। जब मैंने स्थानीय टॉमकैट रन कॉन्फ़िगरेशन का उपयोग किया तो मैं जेएसपीएस डीबग करने में सक्षम था। चरण 0 के बाद – Jay

18

रिमोट जेएसपी डिबगिंग के लिए (जो localhost पर भी लागू होता है) आपको JSR45support plugin इंस्टॉल करना होगा।

  1. जाओ को पसंद>प्लगइन्स, JSR45 प्लगइन के लिए खोज, और इसे सक्षम करें।
  2. एक रन विन्यास बनाएँ: भागो>भागो विन्यास>+ बटन क्लिक करें और लेने JSR45 संगत सर्वर, और उसके बाद खुलने वाले संवाद में, चयन रिमोट, और सर्वर होस्ट और पोर्ट सेट करें। सेटिंग सर्वर:जेनेरिक ठीक काम करना चाहिए।
  3. सुनिश्चित करें कि आप स्टार्टअप/विन्यास>डीबग में सही बंदरगाह सेट करें।

  4. ओपन मॉड्यूल सेटिंग्स (परियोजना फ़ोल्डर पर F3), और पहलुओं के तहत एक वेब पहलू जोड़ने के लिए, और के तहत वेब संसाधन निर्देशिकाएं अपने JSP रूट फ़ोल्डर निर्दिष्ट करें।

  5. विन्यास ... बटन पर क्लिक करें, और सेम, वर्गों और पुस्तकालयों है कि आपके JSPs पर निर्भर के साथ फ़ोल्डर का चयन करें।

अब JSP breakpoints काम करना चाहिए, बशर्ते कि आप जब अपने सर्वर शुरू करने proper debug arguments साथ अपने सर्वर शुरू कर दिया।

+0

आइडिया पुनरारंभ करें। यह सुविधा केवल आइडिया अल्टीमेट में उपलब्ध है। –

0

कृपया सुनिश्चित करें कि, कि तुम बिल्ला के conf/web.xmlsuppressSmap में नहीं रूप JSR45 के समर्थन इंटेलीजे के डिबगर के लिए आवश्यक है सक्षम है।

यह इस तरह दिखना चाहिए:

<init-param> 
    <param-name>suppressSmap</param-name> 
    <param-value>false</param-value> 
</init-param> 

https://tomcat.apache.org/tomcat-7.0-doc/jasper-howto.html

से suppressSmap - JSR45 डिबगिंग के लिए SMAP जानकारी की पीढ़ी को दबा दिया जाना चाहिए? सही या गलत, डिफ़ॉल्ट झूठी।

0

आप Intellij डिबगर उपयोग कर रहे हैं आप JSP के अंदर एक ब्रेकपाइंट डालने और अभिव्यक्ति this.jspContext.request.getAttribute("attributeName") मूल्यांकन द्वारा एक व्यक्ति विशेषता के मान प्राप्त कर सकते हैं।

ध्यान दें कि यह जावा ऑब्जेक्ट प्रकार लौटा सकता है, और आपको इसे सही प्रकार पर डालना पड़ सकता है। इसके अलावा यदि आप रिमोट टॉमकैट लॉन्च करते हैं तो आईडीईए किसी भी ब्रेकपॉइंट्स को नहीं मार पाएगा, इसलिए आपको आईडीईए के अंदर से डीबग मोड में टॉमकैट लॉन्च करने की आवश्यकता है।

संबंधित मुद्दे