ग्रहण - गायब लाइन नंबर विशेषताओं के कारण ब्रेकपॉइंट स्थापित करने में असमर्थ


370

मुझे ब्रेकपॉइंट सेट करने की कोशिश के दौरान एक्लिप्स में यह अजीब त्रुटि मिल रही है।

Unable to insert breakpoint Absent Line Number Information

मैंने कंपाइलर विकल्पों से चेकबॉक्स पर टिक किया लेकिन कोई भाग्य नहीं।


क्या आप javap -verbose को क्लास फाइल पर कर सकते हैं और यहाँ जानकारी पेस्ट कर सकते हैं? देखें कि क्या वास्तव में इसका कोई लाइन नंबर है।
z -

3
हाय yx, मैंने उस वर्ग पर एक जाप किया। यह
चन्द्रजीत

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

6
मेरे लिए यह एक गलत प्रस्ताव था, मैंने गलती से जिस कक्षा का परीक्षण कर रहा था, उसका मजाक उड़ाया। शायद किसी को यह प्रासंगिक लगता है।
हिपोकिटो

1
@hipokito क्या आप बता सकते हैं कि क्लास को मॉक करने और इसे पूर्ववत् करने का क्या मतलब है? अन्य समाधान मेरे लिए काम नहीं कर रहे हैं।
एम्बर

जवाबों:


227

मुझे ग्रहण 3.4.1 में एक ही त्रुटि संदेश मिला था, SUN JVM1.6.0_07 टॉमकैट 6.0 से जुड़ा था (एक अलग मशीन पर डिबग-मोड में चल रहा है, सूर्य JVM1.6.0_16, डीबग कनेक्शन ने सही तरीके से नहीं किया था)।

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

मैं चींटी का निर्माण करने के लिए स्विच, का उपयोग कर

<javac srcdir="./src/java" destdir="./bin" debug="true">

फिर भी, एक ही संदेश।

मुझे पता नहीं चला कि इस संदेश का क्या कारण है और यह क्यों नहीं चलेगा। हालांकि यह चल रहे टॉमकैट डिबग सत्र के साथ कुछ करने के लिए लग रहा था: जब डिस्कनेक्ट किया जाता है, तो समस्या को सुलझाना। लेकिन डिबगर को टॉमकैट से कनेक्ट करने या कनेक्टेड डिबग सत्र के दौरान नए ब्रेकपॉइंट सेट करने पर, यह फिर से दिखाई दिया।

हालांकि, यह पता चला कि संदेश गलत था : मैं वास्तव में डिबग करने और सेट करने में सक्षम था, दोनों डीबगिंग के दौरान और पहले ( जावप-एलएल ने लाइन नंबर, भी दिखाया था)। तो बस इसे अनदेखा करें :)


31
ऊपर मेरे लिए काम नहीं किया। मुझे ग्रहण> ब्रेकप्वाइंट दृश्य में 'सभी ब्रेकप्वाइंट निकालें' आइकन पर क्लिक करना था, फिर ब्रेकप्वाइंट को फिर से जोड़ें। वह काम किया।
विक डेविड

3
मैंने अन्य सभी प्रोजेक्ट को बंद कर दिया, सभी ब्रेकप्वाइंट हटा दिए, फ़ाइल में एक यादृच्छिक बदलाव किया, प्रोजेक्ट को साफ किया, ब्रेक प्वाइंट को फिर से पेश किया। मेरे लिए यह काम किया
अली

4
निर्माण स्क्रिप्ट debug="true"के javacकार्य में जोड़ना antकाम किया।
जस्टिन स्काइल्स

इस उत्तर के लिए अभी भी मान्य ग्रहण केपलर के अपने स्थापना जावा 7. साथ खिड़कियों पर 8 64 बिट चल रहा है
Magnilex

1
"यह संदेश गलत निकला ..." - यह हास्यास्पद रूप से अधिक जोर दिया जाना चाहिए। यह पढ़ने के बाद भी, मैं समझ नहीं पाया कि यह आप क्या कह रहे हैं। अपने पूरे उत्तर को नीचे की ओर और बड़े बोल्ड बॉक्स में ऊपर की ओर ले जाने पर विचार करें, ऐसा कुछ कहें "यह संभावना है कि इस संदेश का अर्थ कुछ भी नहीं है - बस परेशान-क्लिक-मी-के बारे में क्लिक करने की कोशिश करें और देखें कि क्या आप कर सकते हैं अभी भी डिबग है ”।
बैन

105
  1. ग्रहण मेनू में, विंडो-> प्राथमिकताएं-> जावा-> कंपाइलर पर जाएं
  2. चेकबॉक्स अनचेक करें "पंक्ति संख्या विशेषताएँ जोड़ें ..."
  3. अप्लाई -> हां पर क्लिक करें
  4. मार्क चेकबॉक्स "लाइन नंबर विशेषता जोड़ें ..."
  5. फिर से आवेदन करें।
  6. खुश डिबगिंग जाओ

1
चाल मेरे मामले पर काम नहीं करता है
यूसुफ इब्राहिम

28

इसने मेरी समस्या तय कर दी:

  1. विंडो -> प्राथमिकताएं -> सर्वर -> रनटाइम वातावरण
  2. Apache Tomcat -> संपादित करें
  3. JRE के बजाय JDK का चयन करें

3
इससे मेरी समस्या ठीक हो गई (चींटी कॉन्फिग में निर्दिष्ट jdk का गलत संस्करण था)। यह समस्या को ठीक किया था, लेकिन ग्रहण अभी भी मुझे त्रुटि संदेश दे दी है। इसलिए इस बदलाव को करने के बाद अपने कोड को डिबेट करने का प्रयास करें।
पॉल

यहां तक ​​कि आपका ऐप भी वेब नहीं है, समाधान ठीक है, Installed JREsडिफ़ॉल्ट रूप से JDKइसके बजाय हैJRE
ahmednabil88

मुझे नियम पता है, लेकिन यहां बहुत सारे उत्तर हैं। यह एक, मेरे लिए नवंबर 2019 पर काम करता है लेकिन मैं मुख्य रनटाइम एनवायरमेंट को भी बदल देता हूं, जिससे समस्या 100% हल हो जाती है।
अलवरगॉन

19

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

@Service("SkillService")
public class TestServiceWithoutInterface {
   public void doSomething() {
      System.out.println("Hello TestServiceWithoutInterface");
   }
}

ऊपर की सेवा में स्प्रिंग द्वारा उत्पन्न एक इंटरफ़ेस होगा, जो "गायब लाइन नंबर" का कारण होगा। एक वास्तविक इंटरफ़ेस जोड़ना पीढ़ी की समस्या को हल करता है:

public interface TestService {
    void doSomething();
}

@Service("SkillService")
public class TestServiceImpl implements TestService {
   public void doSomething() {
      System.out.println("Hello TestServiceImpl");
   }
}

1
"इंटरफ़ेस को जोड़ने" का क्या मतलब है? इसे फ़ाइल में आयात करें?
कैमहार्ट

1
नमस्ते यहाँ निश्चित व्याख्या नमस्ते github.com/spring-projects/spring-ide/issues/… और technology.first8.nl/…
Poutrathor

14

मेरे पास ब्लैकबेरी एसडीके की ओर से इस समस्या का जवाब है: किसी कारण से, चाहे मैंने कितनी बार कंपाइलर में विकल्प बदले हों, वास्तविक अंतर्निहित सेटिंग्स फ़ाइल नहीं बदली।

एक फ़ाइल कहा जाता है के लिए अपनी परियोजना के .settings फ़ोल्डर में एक नज़र org.eclipse.jdt.core.prefs

वहां आप सेटिंग्स को मैन्युअल रूप से संशोधित कर सकते हैं:

org.eclipse.jdt.core.compiler.debug.lineNumber=generate

संपादित करें: इसके अलावा, मैंने देखा है कि कभी-कभी मैं ग्रहण के अलर्ट को नजरअंदाज कर सकता है, और यह अभी भी आवश्यक स्थान पर बंद हो जाएगा ... जिज्ञासा और जिज्ञासा ... मैंने इसे उन चीजों की बाल्टी में डाल दिया जिनसे हम निपटना सीखते हैं जब देव के रूप में काम करना।


8

यह मेरे लिए काम किया:

  1. के तहत Window --> Preferences --> Java --> Compiler --> Classfile Generation, सभी विकल्पों के लिए किया जाना है True
  2. debug="true"बिल्ड <javac>. xml कार्य में बनाया गया ।
  3. चींटी द्वारा उत्पन्न युद्ध द्वारा टॉमकैट में आवेदन को तैनात करें
  4. टॉमकैट को Debugमोड में पुनः आरंभ किया

7

न जानें कि क्या यह अभी भी प्रासंगिक है, शायद किसी अन्य नाविक को यह उपयोगी लगेगा।

संदेश तब दिखाई देता है जब किसी के पास एक क्लास फ़ाइल होती है जो डिबग फ़्लैग को बंद कर देती है।

ग्रहण में, आप उपर्युक्त विकल्पों द्वारा इसे चालू कर सकते हैं,

विंडो -> वरीयताएँ -> जावा -> कंपाइलर -> क्लासफाइल जेनरेशन: "जनरेट की गई क्लास फाइल में लाइन नंबर की विशेषताएँ जोड़ें"

लेकिन अगर आपके पास जार फ़ाइल है, तो आपको संकलित आउटपुट मिलेगा। इस समस्या को ठीक करने का कोई आसान तरीका नहीं है।

यदि आपके पास स्रोत तक पहुंच है और जार फ़ाइल प्राप्त करने के लिए चींटी का उपयोग करते हैं, तो आप निम्नानुसार कार्य को संशोधित कर सकते हैं।

  <javac  destdir="${build.destDir}" srcdir="${build.srcDir}" source="1.6" fork="true" target="${javac.target}" debug="on" debuglevel="lines,vars,source" deprecation="on" memoryInitialSize="512m" memoryMaximumSize="1024m" optimize="true"   >

खुश डिबगिंग ।।

रेफरी: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm


6

मैंने यहां लगभग हर समाधान की कोशिश की और कोई भाग्य नहीं। क्या आपने "मुझे फिर से मत बताओ" पर क्लिक करने का प्रयास किया? ऐसा करने के बाद मैंने अपना कार्यक्रम फिर से शुरू किया और सब ठीक हो गया। ग्रहण ने मेरे ब्रेकपॉइंट को ऐसे मारा जैसे कि कुछ भी गलत नहीं था।

मेरे लिए मूल कारण ग्रहण था जो ऑटो-जनरेट स्प्रिंग सीजीएलआईबी प्रॉक्सी वस्तुओं के लिए डिबगिंग सेटअप करने की कोशिश कर रहा था। जब तक आपको उस स्तर पर कुछ डिबग करने की आवश्यकता नहीं है, तब तक आपको समस्या को अनदेखा करना चाहिए।


5

यह मदद करता है अगर आपने ग्रहण के संस्करण का संकेत दिया है जो आप उपयोग कर रहे हैं और तकनीक (जावा जेडीटी, या एस्पेक्ट जावा के लिए एजेडीटी, या उदाहरण के लिए सी ++ सीडीटी), बस सुनिश्चित करने के लिए।

जावा पक्ष में, मुझे लगता है कि आपके "कंपाइलर विकल्पों में से चेकबॉक्स को चखना" यह दर्शाता है

" Window --> Preferences --> Java --> Compiler --> Classfile Generation" के अंतर्गत , सभी ' Class file' जेनरेशन ऑप्शन True पर सेट होते हैं:

  • (1) चर विशेषताएँ जोड़ें,
  • (2) ऐडलाइन नंबर,
  • (3) स्रोत फ़ाइल नाम जोड़ें,
  • (4) अप्रयुक्त स्थानीय चर को संरक्षित करना।

क्या आपकी परियोजना केवल वैश्विक स्तर पर (विंडोज़ वरीयताएँ) या परियोजना विशिष्ट स्तर पर जाँच की गई है?

और क्या आपको यकीन है कि वर्ग खोला गया था (जिस पर आप एक ब्रेकपॉइंट सेट करने का प्रयास करते हैं):

  • आपके स्रोतों में से एक है (और तीसरे पक्ष के पुस्तकालय से नहीं आ रहा है)
  • एक है .javaएक नहीं, .class?

सब कुछ साफ करने और सभी के पुनर्निर्माण की कोशिश करें, संभावित जार संघर्षों की जांच करें ।


हाय VonC, मैं Eclpise Ganymede, जावा 1.6 पर हूं। हां मेरे पास विश्व स्तर पर सेटिंग्स हैं। मैं अपने स्वयं के जावा कोड पर लिखे को सेट करने की कोशिश कर रहा हूं, हां हां मेरे पास .java और .class फाइलें हैं। और मैंने उस क्लास में जावप किया। यह
चन्द्रजीत

यदि आप उन सेटिंग्स को वैश्विक स्तर पर सेट करते हैं, तो मेरा मानना ​​है कि आपने प्रोजेक्ट विशेष सेटिंग्स के साथ उन्हें ओवरराइड नहीं किया है? यदि नहीं, तो एक ही चीज जो मैं अभी देख रहा हूं वह है .java के बजाय। पर थोपना ...
VonC

4

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

<javac srcdir="./src/java" destdir="./bin" debug="true">

नोट: यदि आपने अभी-अभी डिबग फ्लैग को जोड़ा है और आपको recompiled किया है, तब भी आपको अपने एप्लिकेशन को सर्वर पर फिर से इंस्टॉल करने की आवश्यकता है क्योंकि यह वह जगह है जहाँ एक्लिप्स क्लास फ़ाइलों को डीबग कर रहा है। बहुत स्पष्ट लेकिन एक घंटे बिताना आसान है या अपने सिर को खरोंच कर सोच रहा है कि यह काम क्यों नहीं कर रहा है (मुझ पर विश्वास करें)।


4

jreआपके द्वारा उपयोग किए जाने वाले को बदलने का प्रयास करें । इसके बजाय jreफ़ोल्डर में सेट करें JDK


4

चूँकि मेरे पास जावा के 6 अलग-अलग संस्करण स्थापित हैं, इसलिए मुझे अपने डिफ़ॉल्ट JDK अनुपालन को उस मिलान संस्करण से बदलना होगा जो मैं उपयोग करना चाहता था। डिफ़ॉल्ट रूप से ग्रहण का कंपाइलर कंप्लायंस लेवल जावा 1.7 पर सेट किया गया था जब सबकुछ जावा 1.6 का उपयोग करके बनाया गया / संकलित किया गया था।

तो मैंने जो कुछ किया था

  1. ग्रहण मेनू में, विंडो-> प्राथमिकताएं-> जावा-> कंपाइलर पर जाएं
  2. JDK अनुपालन के तहत, मैंने कंपाइलर अनुपालन स्तर 1.7 से 1.6 में बदल दिया

अब ग्रहण "ब्रेकपॉइंट डालने में असमर्थ" अनुपस्थित लाइन नंबर जानकारी के बारे में कोई शिकायत नहीं करता है और डिबगिंग ब्रेकप्वाइंट वास्तव में काम करेगा !!!


4

यदि कुछ और काम नहीं करता है, तो डीबग परिप्रेक्ष्य खोलें, सभी मौजूदा ब्रेकपॉइंट्स को साफ़ करें और फिर उन्हें फिर से सेट करें।


3

इसे यहाँ विस्तार से समझाया गया है:

https://github.com/spring-projects/spring-ide/issues/78

भविष्य के संदर्भ के लिए, यह उत्तर का प्रासंगिक हिस्सा है (इस तथ्य को अनदेखा करें कि स्प्रिंग बूट एप्लिकेशन को संदर्भित करता है, व्यवहार अन्य मामलों के लिए समान है):

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

JVM में लोड होने वाले प्रत्येक वर्ग के लिए, IDE जाँच करता है कि उसे ब्रेकपॉइंट सेट करने की आवश्यकता है या नहीं। यदि यह ब्रेकपॉइंट सेट करने का निर्णय लेता है, तो ऐसा करने की कोशिश करता है (आईडीई में ब्रेकपॉइंट परिभाषा से जानकारी का उपयोग करके, इसकी लाइन संख्या सहित, क्योंकि आप आमतौर पर किसी दिए गए लाइन पर एक स्रोत फ़ाइल पर लाइन ब्रेकप्वाइंट सेट करते हैं)।

यह निर्णय (किसी दिए गए लोड किए गए वर्ग पर ब्रेकपॉइंट सेट करना है या नहीं) आप किस प्रकार से ब्रेकपॉइंट सेट करते हैं, इनक्लोजिंग प्रकार और आंतरिक वर्ग की जाँच करते हैं। यह सुनिश्चित करता है कि आंतरिक कक्षाओं (यहां तक ​​कि अनाम आंतरिक वर्ग) के लिए ब्रेकप्वाइंट JVM पर सेट हैं (और इसे अनदेखा नहीं किया गया है)।

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

जब IDE संलग्नक प्रकार (आपका नियंत्रक वर्ग) को लोड करता है, तो यह लाइन ब्रेकपॉइंट को सेट करने का प्रयास करता है और उसी के साथ सफल होता है। यह ब्रेकप्वाइंट मार्कर पर चेक मार्कर के साथ कल्पना की जाती है।

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


2

मेरी स्थिति भी ऐसी ही थी:

  • मैं एक JUnit परीक्षण डिबग कर रहा था
  • मैं जासूसी करने के लिए मॉकिटो का इस्तेमाल कर रहा था, जैसे कि spyTask = spy(new Task())
  • मैंने कक्षा के अंदर ब्रेकपॉइंट लगाया जो मैं जासूसी कर रहा था (अंदर Task.java)

यह ब्रेकपॉइंट हर बार मेरे द्वारा चलाए जाने पर प्रश्न में त्रुटि उत्पन्न करता है Debug As... > JUnit Test

समस्या का समाधान करने के लिए, मैंने ब्रेकपॉइंट को वास्तविक परीक्षण (टास्कटेस्ट.जावा के अंदर) में स्थानांतरित किया। एक बार निष्पादन बंद हो गया, मैंने ब्रेकपॉइंट को वापस जोड़ दिया जहां मेरे पास था, मूल रूप से (टास्क.जवा के अंदर)।

मुझे अभी भी वही त्रुटि मिली लेकिन "ओके" पर क्लिक करने के बाद, ब्रेकप्वाइंट ने ठीक काम किया।

आशा है कि किसी की मदद करता है,

-gmale


इसे साझा करने के लिए धन्यवाद, मुझे वही समस्या मिली है। समाधान मेरे लिए हालांकि काम नहीं किया। हालांकि मैं मॉकिटो के लिए नया हूं और मुझे कुछ अन्य समस्या हो सकती है जो मेरी नकली वस्तु को वास्तव में कॉल करने से रोक रही है। लेकिन मैं अभी भी इस @gmale पोस्ट करने की सराहना करता हूं!
माइकल ओसोफस्की 19

2

जब मैं जेटी सर्वर पर बना रहा था और ANT द्वारा नई .war फ़ाइल संकलित करने में मुझे एक ही समस्या थी। आपको jdk / jre संकलक का एक ही संस्करण बनाना चाहिए और पथ का निर्माण करना चाहिए (उदाहरण के लिए jdk 1.6v33, jdk 1.7, ....) जावा कंपाइलर सेट करने के बाद जैसा कि पहले लिखा गया था।

मैंने सब कुछ किया और अभी भी काम नहीं कर रहा हूं। समाधान संकलित .class फ़ाइलों और उत्पन्न युद्ध फ़ाइल और अब इसके काम के लक्ष्य को हटा दिया गया था :)


2

स्प्रिंग एओपी के साथ इस संदेश को मिला (लगता है कि CGLIB पुस्तकालय से आ रहा है)। इग्नोर पर क्लिक करना ठीक काम लगता है, फिर भी मैं डिबग कर सकता हूं।


2

मुझे इस संदेश का एक और कारण मिला। मैं स्काला की प्रोग्रामिंग कर रहा था। समाधान था:

  1. ओपन रन -> डिबग कॉन्फ़िगरेशन
  2. मेन टैब में, नीचे की तरफ, "लागू करें" और "रिवर्ट" बटन के बगल में, एक पाठ है जिसमें कहा गया है कि आप किस लॉन्चर का उपयोग कर रहे हैं, और उसके बगल में, "अन्य का चयन करें" कहकर हाइपरलिंक है। यह एक अजीब यूआई तत्व है, पहली नज़र में देखने योग्य नहीं है।
  3. "अन्य चुनें" लिंक का उपयोग करें और "स्काला एप्लिकेशन (नया डिबगर) लॉन्चर" चुनें। दूसरे को स्कैला के साथ काम नहीं लगता।

अब डिबगिंग काम करना चाहिए। ध्यान दें कि मैंने स्काला आईडीई प्लगइन स्थापित किया है, यदि आपके पास नहीं है तो यह विकल्प उपलब्ध नहीं हो सकता है।


2

ऊपर की चीजें मेरे काम नहीं आईं। नीचे समाधान अंत में काम किया। डिबग कॉन्फ़िगरेशन -> क्लासपैथ -> उपयोगकर्ता प्रविष्टियां -> (उस प्रोजेक्ट का src फ़ोल्डर जोड़ें जिसे आप डीबग करना चाहते हैं।)


1

टॉमकैट पर तैनात एक डब्ल्यूएआर (कई ग्रहण परियोजना कलाकृतियों से निर्मित) को डिबग करते समय मुझे यही समस्या थी।

मैं एक एएनटी बिल्ड स्क्रिप्ट का उपयोग करके सब कुछ बना रहा हूं। यदि यह आप कर रहे हैं, तो सुनिश्चित करें कि डिबग = सच्चा झंडा आपके द्वारा प्राप्त किए गए प्रत्येक जेवैक चींटी कार्य पर सेट है। यह मेरी एकमात्र समस्या थी - मुझे आशा है कि यह आपकी समस्या को दूर करने में मदद करेगी!


1

मुझे JBoss 7.1 के साथ एक ही त्रुटि थी .. और मैंने Zefiro के समान ही किया। बस त्रुटि को नजरअंदाज कर दिया और मैं सामान्य रूप से ब्रेकप्वाइंट लगाने में सक्षम था। मेरे मामले में, मैं चींटी बिल्डर का निर्माण कर रहा था और यह मेरा जेवैक कार्य है:

<javac
        srcdir="${src.dir}"
        destdir="${build.classes.dir}" 
        includeantruntime="false" 
        debug="${debug}"
        verbose="false"
        debuglevel="lines,vars,source"
        source="1.6"
        target="1.6">

        <!-- Sppressing warning for setting an older source without bootclasspath
             (see: https://blogs.oracle.com/darcy/entry/bootclasspath_older_source) -->
        <compilerarg value="-Xlint:-options"/>

        <classpath>
            <fileset dir="${lib.dir}" includes="*.jar" />
            <fileset dir="${jboss.lib.dir}" includes="**/*.jar" />
        </classpath>

    </javac>

1

मुझे एक ही मुद्दा मिला, मैंने समाधान खोजने के लिए बहुत समय बिताया लेकिन ये समाधान अप्रयुक्त हैं, इसलिए मैं सभी मामलों का स्वयं अध्ययन करता हूं, आखिरकार मुझे पता चला कि यह समस्या जेडीके संस्करणों के बीच भ्रम है। नीचे समस्या को हल करने के लिए कदम है: 1. JDK और JRE संस्करण के सभी निकालें, केवल एक संस्करण रखें। 2. सेट EAVse में JAVA_HOME सिस्टम और जावा कंपाइलर समान है। कुछ मामलों में, उपरोक्त त्रुटि गायब नहीं होगी, लेकिन हम डिबग मॉडल पर चलने में सक्षम हैं।


1

एक बार जब मैंने junit और Mockito का उपयोग किया तो मुझे वही त्रुटि आई, मैं @PrepareForTestएक स्थिर वर्ग के लिए जोड़ना भूल गया ।

नीचे कोड जोड़ें मेरी समस्या ठीक हो गई।

@PrepareForTest({XXXXX.class})

यकीन नहीं होता कि यह वही मामला था।


1

मेरी समस्या यह थी कि मेरे पास 2 JAR का था और मैं Java Build Path => Order & Exportग्रहण में टैब में अपने आदेश के आधार पर दूसरे के साथ ओवरराइड करने की कोशिश कर रहा था , क्योंकि एक डीबगिंग के लिए था और दूसरा (डीएआरजी डीएआर क्रम में पहले होने वाला नहीं था)। जब मैंने इसे इस तरह किया, तो मुझे मैन्युअल रूप से एक स्रोत संलग्न करना पड़ा।

मैंने गैर-डीबग जार को हटाने और डीबग जार को अपने \ WEB-INF \ lib \ निर्देशिका में रखने, सफाई, निर्माण, आदि की कोशिश की, और यह काम किया। इस बार (संलग्न स्रोत को हटा दिया गया), यह स्वचालित रूप से मुझे डिबग कोड के माध्यम से नेविगेट करने देगा, बिना किसी स्रोत को मैन्युअल रूप से संलग्न किए बिना। ब्रेकपॉइंट और डीबग ने भी काम किया।


यदि किसी को अभी भी परेशानी हो रही है, तो मैंने इन सभी विशेष समाधानों की कोशिश की, जो अन्य उत्तरों में उल्लिखित हैं:

  • अनचेक करें, लागू करें, और फिर से जाँचें Add line number attributes...
  • org.eclipse.jdt.core.prefsएक अन्य उत्तर में वर्णित रूप से मैन्युअल रूप से संपादन : https://stackoverflow.com/a/31588700/1599699
  • डीएआर सक्षम होने के साथ जार को सुनिश्चित किया जा रहा था।
  • JDK अनुपालन स्तर को 1.6 से बदलकर 1.7 (जिससे JDK मैं उपयोग कर रहा था) से मेल खाता है।

मैंने सर्वर को सामान्य रूप से बंद कर दिया (और सुनिश्चित करें कि java.exe वास्तव में बंद है ...), दोनों प्रोजेक्ट में \ build \ निर्देशिका को हटाकर, -लीन पैरामीटर के साथ ग्रहण को फिर से शुरू करना, डीबग जार को रीफ़्रेश करना, ताज़ा करना। डीबग JAR के साथ प्रोजेक्ट को साफ करना और उसका निर्माण करना, सर्वर को डीबग मोड में शुरू करना, प्रकाशन / सफाई, और ब्रेकपॉइंट करना।


0

मैंने जार के संकलन / निर्माण के दौरान उपरोक्त सभी चीज़ों को सूचीबद्ध किया था - अभी भी एक ही मुद्दा था।

आखिरकार, सर्वर शुरू करते समय नीचे सूचीबद्ध jvmarg में परिवर्तन होता है, जो आखिरकार मेरे लिए काम करता है:

1) javagent और bootclasspath से संबंधित jvm args का एक गुच्छा निकाला / टिप्पणी की गई।

2) निम्नलिखित पंक्ति को चालू / अन-कम किया गया:

फिर जब मैं सर्वर शुरू करता हूं, तो मैं अपने ब्रेकप्वाइंट को हिट करने में सक्षम हूं। मुझे संदेह है कि लाइन की संख्या का पता लगाने की क्षमता के साथ जावावेंट किसी तरह हस्तक्षेप कर रहा था।


0

निम्नलिखित जांचें / करें:

1) "विंडो -> प्राथमिकताएं -> जावा -> कंपाइलर -> क्लासफाइल जेनरेशन" के तहत, सभी विकल्पों को सच करना होगा:

(1) Add variable attributes...
(2) Add line number attributes...
(3) Add source file name...
(4) Preserve unused (never read) local variables

2) अपने प्रोजेक्ट के .settings फोल्डर में org.eclipse.jdt.core.prefs नामक फाइल को देखें। Ver.eclipse.jdt.core.compiler.debug.lineNumber = जेनरेट करें या सेट करें

3) यदि त्रुटि विंडो अभी भी दिखाई देती है, तो त्रुटि संदेश प्रदर्शित नहीं करने के लिए चेकबॉक्स पर क्लिक करें।

4) प्रोजेक्ट को स्वच्छ और निर्माण करें। डिबगिंग शुरू करें।

आम तौर पर त्रुटि विंडो किसी भी अधिक प्रदर्शित नहीं होती है और डिबगिंग informations को सही ढंग से प्रदर्शित किया जाता है।


0

मैं इस समस्या में भी भाग गया। मैं एक चींटी बिल्ड स्क्रिप्ट का उपयोग कर रहा हूं। मैं एक विरासत अनुप्रयोग पर काम कर रहा हूं इसलिए मैं jdk संस्करण 1.4.2 का उपयोग कर रहा हूं। यह काम करता था इसलिए मैंने चारों ओर देखना शुरू किया। मैंने देखा कि JRE टैब पर डीबग कॉन्फ़िगरेशन के तहत जावा का संस्करण 1.7 पर सेट किया गया था। एक बार जब मैंने इसे वापस बदल दिया तो 1.4 ने काम किया।

आशा है कि ये आपकी मदद करेगा।


0

मैं लॉगिंग मैनेजर को डीबग करने की कोशिश कर रहा था और उसे jdk में बदलने के लिए jre को बदलने की जरूरत थी और फिर "jdk" परिवेश में "मुख्य" टैब में इस jdk को चुनने के लिए। डिबग कॉन्फ़िगरेशन का "रनटाइम JRE" तब सब ठीक था।


0

मैंने इस समस्या को तब देखा जब मैंने @ManagedBean (javax.annotation.ManagedBean) के साथ एक क्लास एनोटेट किया। JBoss EAP 6.2.0 पर नए संकलित ऐप को चलाने पर चेतावनी संदेश आया। इसे अनदेखा करना और वैसे भी चलाने से कोई फायदा नहीं हुआ - ब्रेकपॉइंट कभी नहीं पहुंचा।

मैं उस सेम को एक जेएसएफ पेज में ईएल का उपयोग करके बुला रहा था। अब ... यह संभव है कि @ManagedBean इसके लिए अच्छा नहीं है (मैं CDI में नया हूं)। जब मैंने अपना एनोटेशन @Model में बदल दिया, तो मेरी सेम निष्पादित हो गई लेकिन ब्रेकपॉइंट चेतावनी भी चली गई और मैंने उम्मीद के मुताबिक ब्रेकपॉइंट मार दिया।

सारांश में यह निश्चित रूप से देखा गया, क्योंकि @ManagedBean एनोटेशन ने लाइनों के नंबरों को गड़बड़ कर दिया, भले ही इसका उपयोग करने के लिए गलत एनोटेशन था या नहीं।


0

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.