2012-05-09 25 views
7

Gần đây tôi đã nâng cấp lên helios và bây giờ mỗi khi tôi bước vào một constructor cho một lớp học (ví dụ Cat myCat = new Cat();), debugger nhật thực cho thấy chồng nhưKhi bước vào lớp instantiation, debugger nhật thực đi vào mã nguồn gốc

java stack trace entering instantiation:

Để truy cập vào mã trình xây dựng thực tế, tôi phải thoát ra nhiều lần gây phiền toái. Điều này đang xảy ra với mọi lớp và mặc dù chồng tôi không bao giờ thấy bất kỳ thông báo lỗi nào trong bảng điều khiển. Làm thế nào để sửa lỗi này để nó trực tiếp bước vào constructor cho lớp của tôi?

Điều này chỉ xảy ra lần đầu tiên lớp được sử dụng và thậm chí đối với các lớp có cùng tệp src như tệp hiện tại.

+0

lớp học có tồn tại không? nó trông giống như một ClassNotFoundException đang được ném ... – pstanton

+1

Lớp chắc chắn tồn tại, trình gỡ lỗi cuối cùng đi vào cấu trúc, và chương trình chạy thành công. – cplusplus

Trả lời

13

Eclipse có một sở thích lọc bước trong các ưu đãi debugger Java. Tùy chọn mặc định của nó lọc ra java.lang.ClassLoader, tuy nhiên điều này không hoạt động. Điều này có thể có một cái gì đó để làm với gần đây đã cài đặt và chuyển sang sử dụng jre7. Để giải quyết vấn đề của tôi, tôi đã thêm bộ lọc để duyệt qua bất kỳ mã nào trong gói java.lang.

enter image description here

0

Từ theo dõi ngăn xếp được báo cáo trong Eclipse, có vẻ như một ClassNotFoundException đã được khởi tạo và đang được ném, Ứng dụng bạn đã viết có gặp phải bất kỳ sự cố nào không?

Bạn đã đặt điểm ngắt trong hàm tạo của lớp chưa? bạn đã không thể bước vào nhà xây dựng?

Bạn có đang sử dụng Class.forname() hoặc nhập để giới thiệu lớp học với JRE không?

+0

Không có vấn đề gì cả, và tôi đã có thể bước vào nhà xây dựng. – cplusplus

+0

Không có gì đặc biệt để nhập lớp học. – cplusplus

5

Tôi nghĩ rằng ClassNotFoundException chỉ xảy ra như là một phần của quá trình tải lớp - vấn đề là bạn có một điểm ngắt được đặt để kích hoạt khi những ngoại lệ đó được ném. Tôi đoán là phiên bản Eclipse của bạn có điểm ngắt này theo mặc định, trong khi phiên bản cũ của bạn thì không.

Kiểm tra this link, báo cáo vấn đề tương tự và cung cấp giải pháp, chỉ để tắt điểm ngắt đó.

(Trong sự quan tâm của giảng dạy cho cá và tất cả những gì, thuật ngữ tìm kiếm của google là "che khuất debugger launcher $ appclassloader".)

+0

Đây thực sự là vấn đề và xảy ra khi lần đầu tiên gọi một phương thức trên một lớp chưa được tải. Chỉ cần nhấn F7 (trở lại) nhiều lần để trở lại lớp học của bạn - Tôi thấy nó thường mất 8 lần nhấn F7 để làm việc trở lại lớp học của tôi. –

+0

Btw, tôi tự hỏi nếu bạn cũng có thể làm việc xung quanh điều này bằng cách tải lớp trước khi bạn bước vào constructor. Ví dụ, nếu bạn đánh giá trong trình gỡ lỗi 'Class.forName (Cat.class.getName())' thì sao? – yshavit

+0

Mọi thứ được tải lớp sẽ bỏ qua vấn đề này. –

Các vấn đề liên quan