2008-10-10 32 views
5

Trong Eclipse (Ganymede) Tôi đang gỡ lỗi một số mã sử dụng Apache Commons HttpClient và muốn bước vào mã HttpClient. Tôi đã tải xuống mã nguồn và cố gắng đính kèm mã nguồn theo cách thông thường (nhấp CTRL trên tên phương thức và sử dụng nút Đính kèm nguồn). Tôi đã cố gắng để đính kèm cả hai tập tin bên ngoài và thư mục bên ngoài với không thành công. Tôi đã đính kèm nguồn trước khi không có vấn đề gì và hiện có thể bước thành mã nguồn Hibernate thành công.Đính kèm vấn đề nguồn trong Eclipse

Tôi thậm chí đã cố gắng chỉnh sửa tệp .classpath trực tiếp để thêm đường dẫn nguồn theo cách thủ công. Vẫn không có may mắn. Làm mới dự án, làm một bản xây dựng sạch, đóng và mở lại Eclipse không giải quyết vấn đề. Bực bội, Eclipse không cung cấp thông báo lỗi; nó chỉ không đính kèm nguồn.

Sau đây là các mục trong .claspath:

<!-- Hibernate. Works --> 
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/hibernate.jar" sourcepath="D:/Data/Download/hibernate-3.2.2.ga/hibernate-3.2/src"/> 

<!-- Commons HttpClient. Will not attach --> 
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/commons-httpclient.jar" sourcepath="D:/Data/Download/commons-httpclient-3.1/src/java"/> 

tôi đã cố gắng thay đổi đường dẫn đến D: /Data/Download/commons-httpclient-3.1/src và điều đó không làm việc, hoặc.

Cấu trúc thư mục là:

D 
    Data 
    Download 
     commons-httpclient-3.1 
     src 
      java 
      org 
       apache 
       commons 
        httpclient 
        AutoCloseInputStream.java 
        ... (and so forth) 
+0

Bạn có thể định dạng lại các mục nhập .classpath để hiển thị (sau khi đánh dấu) không? –

Trả lời

6

Hãy thử trỏ nó vào thư mục chứa gói cấp cao nhất trực tiếp, "D: /Data/Download/commons-httpclient-3.1/src/java" cho bạn. Điều gì làm việc cho tôi là tạo một tệp src zip mới chứa thư mục "org" và mọi thứ bên dưới nó.

Dưới đây là entry classpath của tôi, (mà làm việc cho tôi) trong trường hợp nó giúp:

<classpathentry kind="lib" path="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1.jar" sourcepath="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1-src.zip"/> 
2

Hãy thử gắn src.zip thay vì src giải nén?

+0

Đã thử trước tiên. Cảm ơn. –

+0

Lạ thật! Chúc may mắn. – JeeBee

+0

Cảm ơn, tôi nghĩ tôi có thể thử mở dự án ở Europa. –

2

Thử thêm nó vào đường dẫn nguồn của cấu hình khởi chạy của bạn.

1

Gắn kết nguồn không phải là tất cả những gì được yêu cầu để bước vào một thư viện trên đường dẫn lớp; thư viện đó cũng phải được biên dịch với các biểu tượng gỡ lỗi. Điều này thường không phải là một vấn đề, vì hầu hết các thư viện Java được biên dịch và phân phối theo cách như vậy, nhưng như bạn đã tìm thấy, một số thư viện không phải là. Thật thú vị khi lưu ý rằng bạn thực sự có thể bước vào các thư viện bên ngoài ngay cả khi không có nguồn kèm theo, bạn không thể nhìn thấy các nguồn theo từng dòng (tất cả các thông tin gỡ lỗi vẫn hoạt động).

Bạn có thể "khắc phục" sự cố này bằng cách biên dịch phiên bản tùy chỉnh của Commons HttpClient (không quá khó) hoặc chỉ bỏ qua toàn bộ ý tưởng "bước vào thư viện". Như một thực tiễn phát triển chung, việc bước vào các thư viện của bên thứ ba sẽ hiếm khi cung cấp thông tin hữu ích. Tôi đã làm nó có thể một hoặc hai lần trong mười năm qua, không phải lúc nào nó cũng làm tôi gần gũi hơn với việc giải quyết tình thế tiến thoái lưỡng nan trong tầm tay.

4

Tôi đã phát hiện ra rằng đôi khi, bạn trỏ đến thư mục bạn muốn giả định là đúng, và sau đó nó vẫn nói rằng nó không thể tìm thấy tập tin trong nguồn đính kèm blah blah.

Lần này, tôi đã nhận ra rằng phần tử đường dẫn cuối cùng là "src". Chỉ cần loại bỏ phần tử đường dẫn này (do đó thực sự chỉ một cấp trên con đường thực tế nơi thư mục "org" hoặc "com" được đặt) kỳ diệu làm cho nó hoạt động.

Bằng cách nào đó, Eclipse có vẻ ngụ ý yếu tố đường dẫn "src" nếu có, và nếu sau đó bạn có nó bao gồm trong đường dẫn nguồn, Eclipse chokes. Hay đại loại thế.

1

Tôi nghĩ, vấn đề trong không gian (hoặc bản địa hóa) các biểu tượng trong đường dẫn đến lưu trữ nguồn. Cố gắng di chuyển nó đến một nơi khác với con đường đơn giản.

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