2012-07-21 14 views
38

में जावा ब्रेकपॉइंट सेट नहीं कर सकता है, मैं GoogleAppEngine स्रोतों (एसडीके 1.7.0) में ब्रेकपॉइंट्स डालने की कोशिश कर रहा हूं लेकिन आईडीईए अल्टीमेट (11.0.2) बस मुझे Warning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl बता रहा है।इंटेलिज आईडीईए

जब मैं इकाई परीक्षण से कोड चलाता हूं तो मुझे यह त्रुटि संदेश मिलता है और मैं विकास सर्वर शुरू करता हूं।

यह काफी परेशान है। वैसे भी मेरे स्रोत एक बाहरी (आईडीईए घर और परियोजना घर दोनों के सापेक्ष) निर्देशिका में हैं, और मेरी जार फाइलें एपेंगिन एसडीके lib dir के अंतर्गत हैं।

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

मैंने मॉड्यूल निर्भरता टैब पर निर्यात चेकबॉक्स के साथ भी खेला, लेकिन मुझे लगता है कि यह web help के अनुसार अप्रासंगिक है, निर्यात केवल तभी महत्वपूर्ण है जब आपके पास निर्भर मॉड्यूल हों और आप इन मॉड्यूल में अपनी लाइब्रेरी उपलब्ध कराएं कुंआ।

वैसे भी, यह प्रश्न 4 years ago भी उत्पन्न हुआ। तो अब मैं सोच रहा हूं कि क्या इस मुद्दे को हल करना वाकई मुश्किल है?

अब मैं बहुत निराश हूं। मुझे अब तक आईडीईए के साथ कोई समस्या नहीं है ... मैंने देखा कि यह समस्या arised to other people भी है, इसलिए यह अद्वितीय नहीं है।

किसी भी मदद की सराहना की जाती है।


मैं नीचे मेरी javap प्रयोगों की वजह से मेरे सवाल संपादित: ऐसा लगता है कि वर्गों और सूत्रों का कहना है सिंक्रनाइज़ेशन से बाहर नहीं हैं। मैंने एसवीएन से 1.7.0 संबंधित संशोधन की जांच की, और मैं 1.7.0 एसडीके का उपयोग कर रहा हूं, इसलिए इन्हें सिंक से बाहर नहीं होना चाहिए।

उत्तर

5

मुझे कुछ अन्य मामले मिले जहां लोगों ने बताया कि आईडीईए का कहना है कि "कोई निष्पादन योग्य कोड नहीं मिला"। एक आम पैटर्न यह है कि वे डीबग जानकारी के बिना बनाया गया कोड डीबग करने की कोशिश कर रहे थे। जांचें कि आप "-g" ध्वज (या समतुल्य) सेट के साथ संकलित कर रहे हैं।

+0

हमम .... यह तार्किक लगता है ... :) मैं यह पता लगाने की कोशिश करूंगा कि यह कैसे बनाया गया था, लेकिन चूंकि मैं कोड संकलित करने वाला नहीं हूं (यह Google है) मुझे वास्तव में पता नहीं है मैं यह कैसे करूँगा। इस पर कोई सुझाव? –

+0

ठीक है ... मैंने अभी यह देखने के लिए आपका अन्य उत्तर पाया है कि डीबग जानकारी उपलब्ध है या नहीं ... आप वास्तव में एक सहायक व्यक्ति हैं! :) मै उसे करने की एक कोशिश तो करूंगा। –

+0

तो। मैंने 'javap -v' कमांड को आजमाया जिसने कक्षा को सफलतापूर्वक अलग किया। अब जो मैंने देखा वह सिर्फ मेरे पिछले संदेह का आश्वासन दिया। विघटित फ़ाइल कहती है 'लाइन नम्बरटेबल: लाइन 481: 0' जो विधि शीर्षलेख की रेखा संख्या है जहां मैंने अपना ब्रेकपॉइंट डाला है (मैंने इसे अगली पंक्ति में रखा है)। तो ऐसा लगता है कि वर्ग और स्रोत सिंक में है (जो वैसे भी एक बड़ा आश्चर्य नहीं है)। –

1

मुझे एक ही समस्या थी और यह तैनाती टैब के तहत, "सर्वर स्टार्टअप पर तैनाती" के तहत, मेरी टोमकैट कॉन्फ़िगरेशन में गलती के कारण हुई थी। मैंने गलती से इसे एक बहुत ही समान परियोजना में बदल दिया था ": युद्ध विस्फोट"। जब मैंने इसे वापस बदल दिया, तो यह ठीक काम किया।

47

मुझे इसी तरह की समस्याएं थीं और विभिन्न प्रयास लागू किए गए हैं। नीचे मेरी हमेशा की तरह कदम है:

  1. आप Maven निर्भरता का उपयोग कर रहे हैं, तो Maven परियोजनाओं के लिए जाने -> ताज़ा
  2. यदि वह काम नहीं करता शीर्ष मेनू का प्रयास करें -> बिल्ड -> पुनर्निर्माण परियोजना
  3. यदि यह अभी भी काम नहीं करता है, शीर्ष मेनू की कोशिश -> फ़ाइल -> अमान्य कैश/पुनरारंभ
  4. है कि अभी भी काम नहीं करता है, तो $ CATALINA_BASE/bin/catalina.sh रोकें, उसके बाद शुरू

इसके बाद, आमतौर पर इसमें 99% समस्याएं शामिल होती हैं। अन्यथा, शायद आपको कुछ अन्य संभावनाओं की जांच करनी होगी।

+0

Thx। मेरे लिये कार्य करता है! – Antonio

+0

स्थानीय इतिहास को हटाने के बिना कैश को अमान्य करने का कोई तरीका है? – Goot

+1

बिल्ड -> पुनर्निर्माण परियोजना मेरे लिए काम करता है। पोस्ट करने का शुक्रिया! – jseals

1

कृपया, सुनिश्चित करें कि आपने प्रोगार्ड नहीं चलाया है। यह मेरी मदद की।

+4

यह एक टिप्पणी की तरह दिखता है। –

8

मुझे इंटेलिज में भी इसी तरह की समस्या थी। मैं कोड स्निपेट में से किसी एक पर ब्रेकपॉइंट नहीं डाल पाया, मैंने कोड की लाइन संख्या बदल दी और फिर मैं ब्रेकपॉइंट डाल सकता था। > फ़ाइल - -> अमान्य कैश/पुनरारंभ

यह इंटेलीजे 13.0.2

+0

मेरे पास बिल्कुल वही स्थिति है :( जब मैं लाइन बदलता हूं तो मैं ब्रेकपॉइंट डाल सकता हूं! – Sergio

1

मेनू एक बग की तरह लग रहा कम मेमोरी मोड ", इसका मतलब है कि वे आपके लिए डीबग नहीं करेंगे, इससे कोई फर्क नहीं पड़ता कि आप कौन से विकल्प या कैश को अमान्य करते हैं।

आपको अपने सर्वर को रोकना चाहिए, जावा पर भेजे गए विकल्पों पर मेमोरी सेटिंग्स को बढ़ाएं और अपने सर्वर को पुनरारंभ करें। यह सुनिश्चित करने के लिए लॉग जांचें कि आपको "कम मेमोरी मोड में चलने" जैसी रिपोर्ट नहीं मिलती है।

1

के तहत मेरे लिए काम किया है कि आप कुछ सर्वर का उपयोग कर रहे हैं, तो वे में जाना जाएगा "IntelliJ में

1

एक ही समस्या थी, यह पता लगाया गया कि सर्वर पर कोड का संस्करण और जिसे मैं डिबगिंग कर रहा हूं वह अलग है। कोड को सिंक करने के बाद समस्या हल हो गई थी।

0

मेरे मामले में मैंने डिवाइस पर सभी चल रही प्रक्रियाओं को मार दिया और डिस्कनेक्ट किया और इसे फिर से कनेक्ट किया।

2

प्रश्न पुराना है लेकिन मैंने सोचा कि मेरा अनुभव भविष्य में किसी की मदद कर सकता है। मेरे मामले में मैं कोड डीबग करने की कोशिश कर रहा था जिसे डीबग जानकारी के साथ संकलित नहीं किया गया था। मैं मेवेन का उपयोग कर रहा हूं जिसमें संशोधन से पहले मूल अभिभावक पोम फ़ाइल निर्माण खंड में नीचे की तरह कुछ दिखती है।

<build> 
    <pluginManagement> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <target>${javaCompilerVersion}</target> 
       <source>${javaCompilerVersion}</source> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
     <!--More plugins...--> 
    </pluginManagement> 
</build> 

मैंने उपर्युक्त अनुभाग को नीचे जैसा दिखने के लिए बदल दिया है।

<build> 
    <pluginManagement> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <target>${javaCompilerVersion}</target> 
       <source>${javaCompilerVersion}</source> 
       <encoding>UTF-8</encoding> 
       <debug>true</debug> 
       <debuglevel>lines,vars,source</debuglevel> 
      </configuration> 
     </plugin> 
     <!--More plugins...--> 
    </pluginManagement> 
</build> 

नोट जोड़ा <debug> और <debuglevel> तत्वों। डीबगलेवल तत्व अल्पविराम से अलग तीन तर्कों का कोई संयोजन ले सकता है।

इस परिवर्तन के साथ संकलन के बाद मैं अंत में आईडीईए में ब्रेक पॉइंट डाल सकता था।

0

समस्या का सार यह है कि JVM एक क्लास फ़ाइल निष्पादित करता है (या तो साधारण वर्ग या वर्ग पथ से जार से लोड की गई कक्षा) जो डीबगर द्वारा उपयोग किए जाने वाले स्रोत को मेल नहीं खाता है। एक बार यह समझा जाता है, समाधान सरल है: सुनिश्चित करें कि स्रोत निष्पादित किए जाने वाले वर्ग का प्रतिनिधित्व करता है। तो, समस्या आप कर सकते हैं ठीक करने के लिए ताज़ा-सिंक्रनाइज़ वर्गों के लिए सूत्रों का कहना है, आदि

0

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

0

अपने पीसी को रीबूट करें। यह मेरे मामले को हल किया। सरल सबसे अच्छा है ..

1

मैं प्रश्न में वर्ग recompiling द्वारा इस समस्या को दूर करने में सक्षम था: बिल्ड -> पुन: संयोजित (filename.java)

0

अपने डिस्क स्थान की जाँच करें और ऊपर मुक्त कुछ स्मृति।यदि आप डिस्क स्पेस पर कम चल रहे हैं, भले ही आपका सर्वर "कम मेमोरी मोड" पर न हो, तो intelliJ डिबगिंग के लिए आवश्यक कक्षाओं को कैश करने के लिए स्थान आवंटित नहीं करेगा। नतीजतन यह आपको ब्रेक-पॉइंट सेट करने की अनुमति नहीं देगा।

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