Eclipse - ไม่สามารถติดตั้งเบรกพอยต์เนื่องจากไม่มีหมายเลขแอตทริบิวต์


370

ฉันได้รับข้อผิดพลาดแปลก ๆ นี้ใน Eclipse ขณะพยายามตั้งเบรกพอยต์

Unable to insert breakpoint Absent Line Number Information

ฉันเลือกช่องทำเครื่องหมายจากตัวเลือกคอมไพเลอร์ แต่ไม่มีโชค


คุณสามารถ javap - verbose ในไฟล์ class และวางข้อมูลที่นี่ได้หรือไม่ ดูว่ามีหมายเลขบรรทัดจริงหรือไม่
z -

3
สวัสดี yx ฉัน javap ในชั้นเรียนนั้น มันสร้างหมายเลขบรรทัด
chandrajeet

แปลกฉันเพิ่งเจอปัญหานี้กับปลั๊กอินของ BlackBerry, Eclipse 3.5 ไม่มีอะไรจะทำกับ Tomcat และฉันก็หยุดที่จุดพักยกเว้นหนึ่งในนั้น ... หากฉันพบคำตอบฉันจะโพสต์
Richard Le Mesurier

6
สำหรับฉันมันเป็นความผิดที่ผิดฉันบังเอิญล้อเลียนชั้นเรียนที่ฉันกำลังทดสอบ บางทีบางคนอาจพบว่าสิ่งนี้เกี่ยวข้องกัน
hipokito

1
@hipokito คุณอธิบายความหมายของการล้อเลียนชั้นเรียนได้อย่างไรและจะยกเลิกได้อย่างไร? โซลูชันอื่น ๆ ไม่ทำงานสำหรับฉัน
เหลืองอำพัน

คำตอบ:


227

ฉันมีข้อความแสดงข้อผิดพลาดเดียวกันใน Eclipse 3.4.1, SUN JVM1.6.0_07 เชื่อมต่อกับ Tomcat 6.0 (ทำงานในโหมดดีบักบนเครื่องที่แตกต่างกัน Sun JVM1.6.0_16 การเชื่อมต่อการดีบักทำงานได้อย่างถูกต้อง)

Window -> Preferences -> ชวา -> คอมไพเลอร์ -> Classfile Generation "หมายเลขบรรทัดเพิ่มแอตทริบิวต์แฟ้มคลาสร้าง"ได้รับการตรวจสอบ ฉันทำความสะอาดคอมไพล์ใหม่ ฉันไม่ได้เลือก, คอมไพล์ใหม่, ตรวจสอบ, คอมไพล์ใหม่ ฉันทำให้แน่ใจว่าโครงการใช้การตั้งค่าส่วนกลาง ยังคงเป็นข้อความเดียวกัน

ฉันเปลี่ยนเป็นมดบิลด์โดยใช้

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

ยังคงข้อความเดียวกัน

ฉันไม่ทราบว่าอะไรเป็นสาเหตุของข้อความนี้และทำไมมันถึงไม่หายไป แม้ว่ามันจะมีบางสิ่งที่เกี่ยวข้องกับเซสชันการดีบัก Tomcat ที่ทำงานอยู่: เมื่อถูกตัดการเชื่อมต่อการรวบรวมซ้ำจะช่วยแก้ปัญหานี้ได้ แต่ในการเชื่อมต่อดีบักเกอร์กับ Tomcat หรือในการตั้งค่าเบรกพอยต์ใหม่ในระหว่างเซสชันการดีบักที่เชื่อมต่อมันจะปรากฏขึ้นอีกครั้ง

อย่างไรก็ตามมันกลับกลายเป็นว่าข้อความผิด : ฉันสามารถดีบักและตั้งจุดพักได้ทั้งก่อนและระหว่างการดีบั๊ก ( javap -lแสดงหมายเลขบรรทัดด้วย) ดังนั้นอย่าสนใจ :)


31
ข้างต้นไม่ได้สำหรับฉัน ฉันต้องคลิกไอคอน 'ลบจุดพักทั้งหมด' ในมุมมอง Eclipse> จุดพักจากนั้นเพิ่มจุดพักอีกครั้ง ที่ได้ผล
Vik David

3
ฉันปิดโครงการอื่นทั้งหมดลบจุดพักทั้งหมดทำการเปลี่ยนแปลงแบบสุ่มในไฟล์ทำความสะอาดโครงการแนะนำจุดพักอีกครั้ง ที่ทำงานให้ฉัน
อาลี

4
เพิ่มdebug="true"ไปที่javacงานของantสร้างสคริปต์ทำงาน
Justin Skiles

คำตอบนี้ยังใช้ได้สำหรับการติดตั้ง Eclipse Kepler ของฉันที่ทำงานบน windows 8 64 บิตด้วย Java 7
Magnilex

1
"มันกลับกลายเป็นข้อความที่ผิด ... " - นี่ควรจะเน้นไปที่ขัน แม้หลังจากอ่านแล้วฉันก็ไม่เข้าใจว่าคุณพูดอะไรอยู่ ลองย้ายคำตอบทั้งหมดของคุณไปที่ด้านล่างและด้านบนในกล่องตัวหนาที่มีขนาดใหญ่พูดอะไรบางอย่างเช่น "มีโอกาสที่ข้อความนี้จะไม่มีความหมายอะไร - ลองคลิกที่ตัวเลือกที่ไม่รบกวนฉันและดูว่าคุณสามารถ ยังคงดีบัก "
สารพิษ

105
  1. ในเมนู eclipse ไปที่ Window-> Preferences-> Java-> Compiler
  2. ยกเลิกการทำเครื่องหมายในช่อง "เพิ่มแอตทริบิวต์หมายเลขบรรทัด ... "
  3. คลิกใช้ -> ใช่
  4. ทำเครื่องหมายที่ช่อง "เพิ่มแอตทริบิวต์หมายเลขบรรทัด ... "
  5. สมัครอีกครั้ง
  6. การแก้ไขข้อบกพร่องที่มีความสุข

1
เคล็ดลับใช้ไม่ได้กับคดีของฉัน
Yusuf Ibrahim

28

ปัญหานี้แก้ไขได้ของฉัน:

  1. หน้าต่าง -> การตั้งค่า -> เซิร์ฟเวอร์ -> สภาพแวดล้อมรันไทม์
  2. Apache Tomcat -> แก้ไข
  3. เลือก JDK แทน JRE

3
วิธีนี้แก้ไขปัญหาของฉัน (ระบุ jdk ผิดเวอร์ชันใน ant config) มันแก้ไขปัญหาได้ แต่ eclipse STILLให้ข้อความแสดงข้อผิดพลาดแก่ฉัน ดังนั้นอย่าลืมตรวจสอบรหัสของคุณจริง ๆ หลังจากที่คุณทำการเปลี่ยนแปลงแล้วอย่าปล่อยให้ข้อความแสดงข้อผิดพลาดทำให้คุณหลุด
พอล

แม้แต่แอปของคุณไม่ใช่เว็บการแก้ปัญหาก็โอเคโดยทำInstalled JREsค่าเริ่มต้นJDKแทนJRE
ahmednabil88

ฉันรู้กฎ แต่มีคำตอบมากมายที่นี่ อันนี้ใช้ได้กับฉันเมื่อ พ.ย. 2019 แต่ฉันเปลี่ยนหลักของสภาพแวดล้อมรันไทม์หลักเช่นกันซึ่งแก้ปัญหาได้ 100%
Alvargon

19

สำหรับปัญหาที่เกี่ยวข้องกับSpring ให้พิจารณาว่าในบางกรณีจะสร้างคลาส "ไม่มีหมายเลขบรรทัด"; ตัวอย่างเช่น@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
"เพิ่มส่วนต่อประสาน" หมายความว่าอย่างไร นำเข้าไฟล์หรือไม่
CamHart

1
สวัสดีคำอธิบายที่ชัดเจนที่นี่github.com/spring-projects/spring-ide/issues/…และtechnology.first8.nl/…
Poutrathor

14

ฉันมีคำตอบสำหรับปัญหานี้จาก BlackBerry SDK: ด้วยเหตุผลบางประการไม่ว่าฉันจะเปลี่ยนตัวเลือกในคอมไพเลอร์กี่ครั้งไฟล์การตั้งค่าพื้นฐานที่แท้จริงก็ไม่เปลี่ยนแปลง

ได้ดูในโฟลเดอร์ .settings ของโครงการของคุณสำหรับไฟล์ที่เรียกว่าorg.eclipse.jdt.core.prefs

ในนั้นคุณสามารถแก้ไขการตั้งค่าด้วยตนเอง:

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

แก้ไข: นอกจากนี้ฉันได้สังเกตเห็นว่าบางครั้งฉันสามารถเพิกเฉยต่อการแจ้งเตือน Eclipse ให้และมันจะยังคงหยุดที่สถานที่ที่ต้องการ ... curioser และ curioser ... ฉันใส่สิ่งนี้ลงในถังของสิ่งที่เราเรียนรู้ที่จะจัดการกับ เมื่อทำงานเหมือน dev


8

สิ่งนี้ใช้ได้กับฉัน:

  1. ภายใต้ตัวเลือกทั้งหมดจะต้องมีการWindow --> Preferences --> Java --> Compiler --> Classfile GenerationTrue
  2. สร้างขึ้นdebug="true"ใน<javac>งานbuild.xml
  3. ปรับใช้แอปพลิเคชันในโพงโดยสงครามที่สร้างขึ้นโดยมด
  4. รีสตาร์ท Tomcat ในDebugโหมด

7

ไม่ทราบว่าสิ่งนี้ยังมีความเกี่ยวข้องอยู่หรือไม่บางทีกะลาสีอีกคนจะพบว่ามีประโยชน์

ข้อความปรากฏขึ้นเมื่อมีไฟล์คลาสรวบรวมแฟล็กการดีบักถูกปิด

ใน eclipse คุณสามารถเปิดใช้งานได้โดยตัวเลือกที่กล่าวถึงข้างต้น

หน้าต่าง -> ค่ากำหนด -> Java -> คอมไพเลอร์ -> การสร้างคลาสไฟล์: "เพิ่มแอ็ตทริบิวต์หมายเลขบรรทัดไปยังคลาสไฟล์ที่สร้าง"

แต่ถ้าคุณมีไฟล์ jar คุณก็จะได้ผลลัพธ์ที่คอมไพล์แล้ว ไม่มีวิธีง่ายๆในการแก้ไขปัญหานี้

หากคุณมีสิทธิ์เข้าถึงแหล่งข้อมูลและใช้ ant เพื่อรับไฟล์ jar คุณสามารถแก้ไขภารกิจ ant ได้ดังต่อไปนี้

  <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"   >

การแก้ไขข้อบกพร่องที่มีความสุข ..

ref: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm


6

ฉันลองเกือบทุกวิธีที่นี่และไม่มีโชค คุณลองคลิก "ไม่ต้องบอกฉันอีก" หลังจากทำเช่นนั้นฉันเริ่มโปรแกรมของฉันใหม่และทุกอย่างก็ดี Eclipse เข้าสู่เบรกพอยต์ของฉันราวกับว่าไม่มีอะไรผิดปกติ

สาเหตุหลักสำหรับฉันคือ Eclipse พยายามตั้งค่าการดีบักสำหรับวัตถุพร็อกซีของ Spring CGLIB ที่สร้างขึ้นอัตโนมัติ หากคุณไม่ต้องการแก้ไขข้อบกพร่องในระดับนั้นคุณควรเพิกเฉยต่อปัญหานี้


5

มันจะช่วยได้หากคุณระบุเวอร์ชันของ eclipse ที่คุณใช้และเทคโนโลยี (Java JDT หรือ AJDT สำหรับ Aspect Java หรือ C ++ CDT เป็นต้น) เพื่อให้แน่ใจ

ในด้าน Java ฉันคิดว่า "เลือกช่องทำเครื่องหมายจากตัวเลือกคอมไพเลอร์" ของคุณหมายถึงสิ่งนี้

ภายใต้ " Window --> Preferences --> Java --> Compiler --> Classfile Generation" Class fileตัวเลือกการสร้าง ' ' ทั้งหมดจะถูกตั้งค่าเป็น True:

  • (1) เพิ่มคุณสมบัติตัวแปร
  • (2) หมายเลขเสริม
  • (3) เพิ่มชื่อไฟล์ต้นฉบับ
  • (4) รักษาตัวแปรท้องถิ่นที่ไม่ได้ใช้

โครงการของคุณมีการตรวจสอบเฉพาะในระดับโลก (การตั้งค่า windows) หรือที่ระดับโครงการเฉพาะหรือไม่

และคุณแน่ใจว่าชั้นเปิด (ซึ่งคุณพยายามที่จะตั้งเบรกพอยต์):

  • เป็นหนึ่งในแหล่งที่มาของคุณ (และไม่ได้มาจากห้องสมุดบุคคลที่สาม)
  • เป็น.javaไม่ได้.class?

พยายามทำความสะอาดทุกอย่างและสร้างใหม่ทั้งหมดตรวจสอบความขัดแย้งที่อาจเกิดขึ้นได้


สวัสดี VonC ฉันเป็น Eclpise Ganymede, Java 1.6 ใช่ฉันมีการตั้งค่าทั่วโลก ฉันกำลังพยายามตั้งค่าด้วยโค้ด Java ของฉันเองดังนั้นฉันมีไฟล์. java &. class และฉันก็ทำ javap ในชั้นเรียนนั้น มันสร้างหมายเลขบรรทัด
chandrajeet

@chandrajeet หากคุณตั้งค่าเหล่านั้นไว้ทั่วโลกฉันคิดว่าคุณตรวจสอบว่าโครงการของคุณไม่ได้แทนที่พวกเขาด้วยการตั้งค่าเฉพาะโครงการหรือไม่ ถ้าไม่ได้มีเพียงสิ่งเดียวที่ฉันเห็นในขณะนี้คือการวางจุดพักบน .class แทน .java ...
VonC

4

ฉันมีปัญหานี้ในขณะที่พยายามเริ่ม Tomcat ในโหมดการดีบักจาก Eclipse ฉันมีไฟล์บิลด์ ANT ดูแลการคอมไพล์และปรับใช้ หลังจากตั้งค่าสถานะการดีบักเป็นจริง (ดังที่กล่าวไว้ในคำตอบอื่น ๆ ) และการปรับใช้แอปพลิเคชันใหม่ก็ทำงานได้ดี:

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

หมายเหตุ:หากคุณเพิ่งเพิ่มการตั้งค่าการดีบักและคอมไพล์ใหม่คุณยังคงต้องปรับใช้แอปพลิเคชันของคุณไปยังเซิร์ฟเวอร์อีกครั้งเนื่องจากนี่คือที่ Eclipse กำลังดีบักไฟล์คลาส ชัดเจนมาก แต่ใช้เวลาประมาณหนึ่งชั่วโมงเกาหัวของคุณและสงสัยว่าทำไมมันถึงไม่ทำงาน (เชื่อใจฉัน)


4

ลองเปลี่ยนการใช้งานของjreคุณตั้งค่าjreในโฟลเดอร์JDKแทน


4

เนื่องจากฉันมีการติดตั้ง Java 6 เวอร์ชันที่แตกต่างกันฉันจึงต้องเปลี่ยนการปฏิบัติตามมาตรฐาน JDK เริ่มต้นเพื่อให้ตรงกับรุ่น Java ที่ฉันต้องการใช้ Eclipse โดยค่าเริ่มต้นมีระดับความสอดคล้องของคอมไพเลอร์ตั้งเป็น Java 1.7 เมื่อทุกอย่างถูกสร้างขึ้น / รวบรวมโดยใช้ Java 1.6

ดังนั้นทั้งหมดที่ฉันทำคือ

  1. ในเมนู eclipse ไปที่ Window-> Preferences-> Java-> Compiler
  2. ภายใต้การปฏิบัติตาม JDK ฉันเปลี่ยนระดับการปฏิบัติตามคอมไพเลอร์จาก 1.7 เป็น 1.6

ตอนนี้ Eclipse ไม่บ่นเกี่ยวกับ "ไม่สามารถแทรกจุดพักข้อมูลหมายเลขบรรทัดขาด" อีกต่อไปและจุดพักการดีบักใช้งานได้จริง !!!


4

หากไม่มีอะไรใช้งานได้ให้เปิดมุมมองการดีบักล้างจุดพักที่มีอยู่ทั้งหมดแล้วตั้งค่ากลับมาอีกครั้ง


3

นี่คือคำอธิบายรายละเอียดที่นี่:

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

สำหรับการอ้างอิงในอนาคตนี่เป็นส่วนที่เกี่ยวข้องของคำตอบ (ไม่สนใจข้อเท็จจริงที่อ้างถึงแอพพลิเคชั่น Spring Boot พฤติกรรมจะเหมือนกันสำหรับกรณีอื่น ๆ มากมาย):

เมื่อใดก็ตามที่คุณตั้งค่าเบรกพอยต์ใน Eclipse / STS, IDE จะพยายามตั้งค่าเบรกพอยต์ใน VM หากคุณเปิดแอพ นั่นคือสิ่งที่เกิดขึ้นในกรณีของคุณเมื่อคุณเรียกใช้แอพสำหรับบูตในโหมดแก้ไขข้อบกพร่อง

สำหรับแต่ละคลาสที่โหลดลงใน JVM นั้น IDE จะตรวจสอบว่าจำเป็นต้องตั้งค่าเบรกพอยต์หรือไม่ ถ้ามันตัดสินใจที่จะตั้งค่าเบรกพอยต์ความพยายามที่จะทำเช่นนั้น (ใช้ข้อมูลจากการกำหนดเบรกพอยต์ใน IDE รวมถึงหมายเลขบรรทัดเนื่องจากคุณมักจะตั้งจุดพักบรรทัดในไฟล์ต้นฉบับที่บรรทัดที่กำหนด)

การตัดสินใจนี้ (ไม่ว่าจะเป็นการตั้งค่าเบรกพอยต์ในคลาสที่โหลดหรือไม่ก็ตาม) จะตรวจสอบประเภทที่คุณตั้งค่าเบรกพอยต์บน, การปิดล้อมประเภทและคลาสภายใน สิ่งนี้ทำให้แน่ใจว่าจุดพักสำหรับคลาสภายใน (แม้แต่คลาสภายในที่ไม่ระบุชื่อ) ถูกตั้งค่าเป็น JVM (และไม่ถูกละเว้น)

Spring Boot สร้างคลาสภายในสำหรับคอนโทรลเลอร์ของคุณเมื่อรันไทม์ (นี่คือ CGLIB ที่สร้างคลาสภายในที่ปรากฏในข้อความแสดงข้อผิดพลาด) เมื่อ JVM โหลดคลาสนั้นจะพยายามกำหนดจุดพักหมายเลขบรรทัดของประเภทการปิดล้อม (สำหรับคลาสภายในนี้) เนื่องจากคลาสภายในที่สร้างขึ้นไม่มีข้อมูลหมายเลขบรรทัดใด ๆ (ไม่จำเป็นต้องมีข้อมูลหมายเลขบรรทัด) การตั้งค่าเบรกพอยต์จึงล้มเหลวสำหรับคลาสภายในนี้พร้อมกับข้อความแสดงข้อผิดพลาดที่กล่าวถึง

เมื่อ IDE โหลดชนิดการปิดล้อม (คลาสคอนโทรลเลอร์ของคุณเอง) มันจะพยายามตั้งค่าเบรกพอยต์ของบรรทัดและประสบความสำเร็จด้วย นี่คือภาพที่มีเครื่องหมายตรวจสอบบนเครื่องหมายเบรกพอยต์

ดังนั้นคุณสามารถละเว้นข้อผิดพลาดที่ปรากฏขึ้นอย่างปลอดภัย เพื่อหลีกเลี่ยงข้อความแสดงข้อผิดพลาดนี้คุณสามารถไปที่การกำหนดค่าตามความชอบ (Java -> Debug) และปิดการใช้งาน "เตือนเมื่อไม่สามารถติดตั้งเบรกพอยต์เนื่องจากคุณสมบัติหมายเลขบรรทัดขาดหายไป"


2

สถานการณ์ของฉันคล้ายกัน:

  • ฉันกำลังดีบักการทดสอบ JUnit
  • ฉันใช้ Mockito เพื่อสร้างสายลับเหมือนใน spyTask = spy(new Task())
  • ฉันใส่จุดพักในชั้นเรียนที่ฉันกำลังสอดแนม (ข้างในTask.java)

จุดพักนี้สร้างข้อผิดพลาดที่เป็นปัญหาทุกครั้งที่ฉันเรียกใช้ Debug As... > JUnit Test

เพื่อแก้ไขปัญหาฉันได้ย้ายจุดพัก 'up' ไปสู่การทดสอบจริง (ภายใน TaskTest.java) เมื่อการประมวลผลหยุดลงฉันได้เพิ่มจุดพักกลับที่เดิมไว้ (ภายใน Task.java)

ฉันยังคงได้รับข้อผิดพลาดเดิม แต่หลังจากคลิก "ตกลง" เบรกพอยต์ก็ใช้งานได้

หวังว่าจะช่วยคน

-gmale


ขอบคุณที่แบ่งปันสิ่งนี้ฉันมีปัญหาเดียวกัน วิธีแก้ปัญหาใช้งานไม่ได้สำหรับฉัน ฉันใหม่กับ Mockito และฉันอาจมีปัญหาอื่นที่ป้องกันไม่ให้วัตถุที่ล้อเลียนของฉันถูกเรียก แต่ฉันยังคงชื่นชมที่คุณโพสต์ @gmale นี้!
Michael Osofsky

2

ฉันมีปัญหาเดียวกันเมื่อฉันทำบนเซิร์ฟเวอร์ jetty และรวบรวมไฟล์. war ใหม่โดย ANT คุณควรสร้างคอมไพเลอร์ jdk / jre รุ่นเดียวกันและ build path (เช่น jdk 1.6v33, jdk 1.7, .... ) หลังจากที่คุณต้องตั้งค่า Java Compiler เหมือนที่เขียนไว้ก่อนหน้านี้

ฉันทำทุกอย่างและยังไม่ทำงาน วิธีการแก้ปัญหาคือการลบไฟล์. class รวบรวมและเป้าหมายของไฟล์ war ที่สร้างขึ้นและตอนนี้มันทำงาน :)


2

รับข้อความนี้ด้วย Spring AOP (ดูเหมือนว่ามาจากห้องสมุด CGLIB) การคลิกที่ละเว้นดูเหมือนว่าจะทำงานได้ดีฉันยังคงสามารถดีบักได้


2

ฉันพบอีกเหตุผลสำหรับข้อความนี้ ฉันเขียนโปรแกรมสกาล่า ทางออกคือ:

  1. เปิด Run -> การกำหนดค่าการดีบัก
  2. ในแท็บหลักที่ด้านล่างข้างปุ่ม "นำไปใช้" และ "เปลี่ยนกลับ" จะมีข้อความบอกว่าตัวเรียกใช้ที่คุณใช้อยู่ข้างๆมีการเชื่อมโยงหลายมิติที่มีคำว่า "เลือกอื่น ๆ " มันเป็นองค์ประกอบ UI ที่แปลกไม่ได้ดูได้อย่างรวดเร็วก่อน
  3. ใช้ลิงก์ "เลือกอื่น ๆ " และเลือก "ตัวเปิดแอปพลิเคชัน Scala (ดีบักเกอร์ใหม่)" อีกอันหนึ่งดูเหมือนจะไม่ทำงานกับสกาลา

ตอนนี้การดีบักควรทำงาน โปรดสังเกตว่าฉันได้ติดตั้งปลั๊กอิน Scala IDE แล้วตัวเลือกนี้อาจไม่สามารถใช้ได้หากคุณไม่มี


2

เหนือสิ่งต่าง ๆ ไม่ทำงานสำหรับฉัน โซลูชั่นด้านล่างทำงานได้ในที่สุด การกำหนดค่าการดีบัก -> Classpath -> รายการผู้ใช้ -> (เพิ่มโฟลเดอร์ src ของโครงการที่คุณต้องการแก้ปัญหา)


1

ฉันมีปัญหาเดียวกันนี้เมื่อทำการดีบัก WAR (สร้างจากสิ่งประดิษฐ์ Eclipse หลายรายการ) ที่ปรับใช้กับ Tomcat

ฉันกำลังสร้างทุกสิ่งโดยใช้สคริปต์สร้าง ANT หากนี่คือสิ่งที่คุณกำลังทำอยู่ตรวจสอบให้แน่ใจว่าตั้งค่าสถานะ debug = true ในทุกภารกิจของ javac ant ที่คุณได้รับ นี่เป็นปัญหาเดียวของฉัน - ฉันหวังว่าจะช่วยแก้ปัญหาของคุณ!


1

ฉันมีข้อผิดพลาดเดียวกันกับ JBoss 7.1 .. และฉันก็ทำเช่นเดียวกันกับ Zefiro เพียงแค่ละเว้นข้อผิดพลาดและฉันก็สามารถวางจุดพักได้ตามปกติ ในกรณีของฉันฉันกำลังสร้างผู้สร้างความคิดและนี่คืองาน javac ของฉัน:

<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

ฉันได้รับปัญหาเดียวกันฉันใช้เวลามากมายในการค้นหาวิธีแก้ปัญหา แต่โซลูชันเหล่านี้ไม่เหมาะสมดังนั้นฉันจึงศึกษาทุกกรณีด้วยตนเองในที่สุดฉันก็พบว่าปัญหามันขัดแย้งกันระหว่างรุ่น JDK ด้านล่างเป็นขั้นตอนในการแก้ไขปัญหา: 1. ลบรุ่น JDK และ JRE ทั้งหมดเก็บรุ่นเดียวเท่านั้น 2. ตั้งค่าระบบ JAVA_HOME และคอมไพเลอร์ java ใน Eclipse เหมือนกัน ในบางกรณีข้อผิดพลาดด้านบนจะไม่หายไป แต่เราสามารถเรียกใช้ในรูปแบบการดีบัก


1

เมื่อฉันพบข้อผิดพลาดเดียวกันเมื่อฉันใช้ junit และ Mockito ฉันลืมที่จะเพิ่ม @PrepareForTestคลาสแบบคงที่

เพิ่มรหัสด้านล่างแก้ไขปัญหาของฉัน

@PrepareForTest({XXXXX.class})

ไม่แน่ใจว่าเป็นกรณีเดียวกัน


1

ปัญหาของฉันคือฉันมี 2 JAR และฉันพยายามที่จะแทนที่หนึ่งด้วยอื่น ๆ ตามคำสั่งในJava Build Path => Order & Exportแท็บใน Eclipse เพราะหนึ่งคือการแก้จุดบกพร่องและอื่น ๆ ไม่ได้ (การแก้จุดบกพร่อง JAR เป็นลำดับแรก) เมื่อฉันทำเช่นนี้ฉันต้องแนบแหล่งข้อมูลด้วยตนเอง

ฉันพยายามลบ JAR ที่ไม่ใช่การดีบักและวาง JAR ที่ดีบักในไดเร็กทอรี \ WEB-INF \ lib \ ของฉันการทำความสะอาดการสร้าง ฯลฯ และใช้งานได้ ครั้งนี้ (มีการลบแหล่งที่แนบมา) มันจะให้ฉันนำทางผ่านรหัสการแก้ปัญหาโดยอัตโนมัติโดยไม่ต้องแนบแหล่งใด ๆ ด้วยตนเอง เบรกพอยต์และดีบักก็ใช้ได้เช่นกัน


ในกรณีที่ใครยังมีปัญหาฉันก็ลองวิธีแก้ปัญหาเฉพาะทั้งหมดที่กล่าวถึงในคำตอบอื่น ๆ :

  • ยกเลิกการเลือกใช้และตรวจสอบอีกครั้ง Add line number attributes...
  • การแก้ไขด้วยตนเองorg.eclipse.jdt.core.prefsตามที่กล่าวไว้ในคำตอบอื่น: https://stackoverflow.com/a/31588700/1599699
  • ตรวจสอบให้แน่ใจว่า JAR ถูกสร้างขึ้นโดยเปิดใช้งานการดีบัก
  • การเปลี่ยนระดับความสอดคล้องของ JDK จาก 1.6 เป็น 1.7 (ดังนั้นการจับคู่กับ JDK I ที่ใช้)

ฉันยังทำตามปกติการปิดเซิร์ฟเวอร์ (และทำให้แน่ใจว่า java.exe ปิดจริง ... ), การลบ \ build \ directory ในทั้งสองโครงการ, เริ่มต้น Eclipse ด้วยพารามิเตอร์ -clean, สร้าง debug JAR, รีเฟรช, การทำความสะอาดและการสร้างโครงการด้วย debug JAR ในนั้นเริ่มเซิร์ฟเวอร์ในโหมดดีบักการเผยแพร่ / การทำความสะอาดและการเบรกพอยต์


0

ฉันทำทุกสิ่งตามที่ระบุข้างต้นในขณะที่รวบรวม / สร้างขวด - ยังมีปัญหาเดียวกัน

ในที่สุดการเปลี่ยนแปลง jvmarg ที่ระบุไว้ด้านล่างในขณะที่เริ่มต้นเซิร์ฟเวอร์คือสิ่งที่ทำงานให้ฉันในที่สุด:

1) Remove / Commented พวงของ jvm args เกี่ยวกับ javaagent และ bootclasspath

2) เปิด / ไม่แสดงความคิดเห็นในบรรทัดต่อไปนี้:

จากนั้นเมื่อฉันเริ่มต้นเซิร์ฟเวอร์ฉันสามารถเข้าถึงจุดพักได้ ฉันสงสัยว่า Javaagent รบกวนความสามารถของ Eclipse ในการตรวจจับหมายเลขบรรทัด


0

ตรวจสอบ / ทำต่อไปนี้:

1) ภายใต้ "หน้าต่าง -> การตั้งค่า -> Java -> คอมไพเลอร์ -> การสร้างคลาสไฟล์" ตัวเลือกทั้งหมดจะต้องเป็นจริง:

(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 ยืนยันหรือตั้งค่า org.eclipse.jdt.core.compiler.debug.lineNumber = สร้าง

3) หากหน้าต่างข้อผิดพลาดยังคงปรากฏขึ้นให้คลิกช่องทำเครื่องหมายเพื่อไม่แสดงข้อความข้อผิดพลาด

4) ทำความสะอาดและสร้างโครงการ เริ่มการดีบัก

โดยปกติแล้วหน้าต่างข้อผิดพลาดจะไม่ปรากฏขึ้นอีกและข้อมูลการดีบักจะแสดงอย่างถูกต้อง


0

ฉันพบปัญหานี้เช่นกัน ฉันใช้สคริปต์สร้างมด ฉันกำลังทำงานกับแอปพลิเคชันรุ่นเก่าดังนั้นฉันจึงใช้ jdk รุ่น 1.4.2 สิ่งนี้เคยทำงานดังนั้นฉันจึงเริ่มมองไปรอบ ๆ ฉันสังเกตเห็นว่าภายใต้การกำหนดค่า Debug บนแท็บ JRE รุ่นของ Java ได้รับการตั้งค่าเป็น 1.7 เมื่อฉันเปลี่ยนกลับเป็น 1.4 มันใช้งานได้

ฉันหวังว่านี่จะช่วยได้.


0

ฉันพยายามดีบักตัวจัดการการบันทึกและต้องการเปลี่ยน jre เป็น jdk จากนั้นเลือก jdk นี้ในแท็บ "main" "Java Runtime Environment" | "runtime JRE" ของการกำหนดค่าการดีบักแล้วทั้งหมดเป็นอย่างดี


0

ฉันเห็นปัญหานี้เมื่อฉันใส่คำอธิบายประกอบคลาสด้วย @ManagedBean (javax.annotation.ManagedBean) ข้อความเตือนปรากฏขึ้นเมื่อเรียกใช้แอพที่ได้รับการรับรองใหม่บน JBoss EAP 6.2.0 การเพิกเฉยต่อมันและการทำงานต่อไปไม่ได้ช่วยอะไร - จุดพักไม่เคยไปถึง

ฉันเรียกถั่วนั้นโดยใช้ EL ในหน้า JSF ตอนนี้ ... เป็นไปได้ว่า @ManagedBean ไม่ดีสำหรับเรื่องนั้น (ฉันใหม่กับ CDI) เมื่อฉันเปลี่ยนคำอธิบายประกอบเป็น @Model ถั่วของฉันจะทำงาน แต่คำเตือนเบรกพอยต์ก็หายไปและฉันก็ถึงจุดพักตามที่คาดไว้

โดยสรุปแล้วดูเหมือนว่าคำอธิบายประกอบ @ManagedBean ทำให้หมายเลขบรรทัดไม่ถูกต้องไม่ว่าจะเป็นการใช้คำอธิบายประกอบที่ไม่ถูกต้องหรือไม่ก็ตาม


0

ตรวจสอบให้แน่ใจโครงการซึ่งในระดับหลักของรันไทม์คือเป็นโครงการเดียวกันในซึ่งเป็นระดับที่คุณมีจุดพักใน หากไม่ตรวจสอบให้แน่ใจว่าโครงการทั้งสองอยู่ใน classpath ของการกำหนดค่าการเรียกใช้และปรากฏก่อนหน้าไหและโฟลเดอร์คลาส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.