2013-06-06 98 views
13

Tôi gặp phải một vấn đề khó chịu sáng nay khiến tôi phải mất vài giờ để tìm ra nó. Tôi đã thừa hưởng một số mã với hai dự án NetBeans, AB. Cả hai đều xây dựng và chạy thành công; không có nhiệm vụ xây dựng Ant phức tạp nào; chỉ là thiết lập IDE mặc định.Tại sao NetBeans không thể tìm thấy CopyLibs cho một số dự án của tôi?

Hai dự án này chia sẻ một lượng lớn mã, vì vậy tôi đã đưa nó vào một dự án thứ ba mới, Common. Sau khi giải quyết các tham chiếu và vân vân, NetBeans báo cáo không có lỗi. Mọi thứ đều ổn. Tôi xây dựng dự án Common mà không bị cản trở. Sau đó mọi thứ trở nên kỳ lạ.

Đột nhiên, khi tôi cố gắng xây dựng các dự án AB, họ biên dịch tốt - nhưng ở phần cuối của build, mỗi người vi phạm với các lỗi tương tự:

Copying 1 file to C:\Projects\projectName\build 
C:\Projects\projectName\nbproject\build-impl.xml:723: The following error occurred while executing this line: 
C:\Projects\projectName\nbproject\build-impl.xml:543: taskdef class org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs cannot be found 
using the classloader AntClassLoader[] 
BUILD FAILED (total time: 3 seconds) 

Tất cả các tệp .class hiển thị trong build/classes và mọi thứ khác dường như đã trôi chảy, nhưng không có gì xảy ra với thư mục dist. Vì vậy, bắt đầu tìm kiếm của tôi cho các vấn đề CopyLibs.

dân đề nghị đảm bảo rằng org-netbeans-modules-java-j2seproject-copylibstask.jar được tham chiếu chính xác trong file project.properties (đó là), và trong file <userhome>/.netbeans/version/build.properties cũng (đó là). Thư viện hiện tồn tại ở tất cả các địa điểm được tham chiếu; trên thực tế, NetBeans dường như đặt một bản sao của lọ này vào thư mục ./lib của tất cả các dự án Java theo mặc định. Tôi đã thử tạo các dự án hoàn toàn mới và đưa các nguồn vào theo cách thủ công, vô ích. Tôi đã bị hoang mang.

tôi gửi bài ở đây với hy vọng rằng:

  • Có lẽ ai đó có thể cho tôi một số cái nhìn sâu sắc vào thế nào điều này xảy ra ở nơi đầu tiên và làm thế nào để tránh nó.
  • Có thể ai đó có thể cho tôi biết lý do tại sao chỉ một số dự án nhất định vi phạm, ngay cả khi tất cả đều có cùng một tệp project.properties hoặc mới.
  • Những người có vấn đề này trong tương lai sẽ có thời gian tốt hơn.

Trả lời

20

Sửa chữa gần nhất mà tôi có thể tìm thấy trực tuyến là this link, chỉ bao gồm một giải pháp từng phần. Làm theo các hướng dẫn trong bài đăng đó sẽ không khắc phục sự cố, vì nó sẽ loại bỏ một số nội dung quan trọng. Đây là giải pháp mà cuối cùng tôi đã vấp phải.

Trong NetBeans, hãy vào đây:

Tools > Options > Miscellaneous > Ant 

Ở dưới cùng của cửa sổ, có một hộp có nhãn Properties. Dán như sau:

libs.CopyLibs.classpath=C\:\\Program Files\\NetBeans 7.1\\java\\ant\\extra\\org-netbeans-modules-java-j2seproject-copylibstask.jar 

Thay thế NetBeans 7.1 bằng đường dẫn cài đặt thực tế của bạn. Đó thực sự là tất cả để có nó! Điều làm cho nó khó khăn là NetBeans dường như làm một số phân tích cú pháp văn bản trong trường này khi bạn nhấp vào OK.Cụ thể, nó xử lý các dấu gạch chéo ngược như thoát và cũng đôi khi thêm dấu gạch chéo ngược.

Đây là lý do tôi mất nhiều thời gian để tìm: Tôi đã thử giải pháp trong liên kết (ví dụ: C:\Program Files\Netbeans v.v.) và không hoạt động, nhưng sau đó tôi quay lại cửa sổ này để khám phá điều này: C\:Program Files v.v. "Oh!" Tôi nghĩ, "Tôi chỉ cần gõ sai! Thật là một kẻ ngốc!" Vì vậy, tôi "sửa" nó thành C:\ và thử lại-- vẫn không thành công. Hóa ra NetBeans sẽ thêm dấu gạch chéo ngược để thoát :, nhưng sẽ chỉ xóa bất kỳ dấu gạch chéo ngược đơn nào khác mà nó tìm thấy ở đây.

Tôi vẫn không biết tại sao điều này xảy ra ngay từ đầu hoặc tại sao nó dường như chỉ ảnh hưởng đến một số dự án nhất định.

+0

Chỉ có cùng một vấn đề, có ai biết tại sao nó xảy ra không? – 1392023093user

+0

Trong NetBeans 8.0.2 nó là Công cụ> Java> Ant, giống như ảnh chụp màn hình cho 7.3 trong câu trả lời của James. – jla

+0

Để sửa chữa netbeans bên ngoài, hãy thêm dòng này vào 'C: \ Users \ username \ AppData \ Roaming \ NetBeans \ x.y.z \ build.properties'. – Jus12

5

Tôi đã có NetBeans 7.1.2 trên máy Mac, đã gỡ cài đặt và sau đó cài đặt 7.3.1. Tôi gặp lỗi tương tự. Dưới đây là những gì tôi phải làm để khắc phục: Truy cập

NetBeans menu > Preferences > Java tab > Ant subtab > Properties

Tôi lưu ý rằng các thuộc tính vẫn có số cũ cho ứng dụng, vì vậy tôi phải thay đổi 7.1.2 thành 7.3.1 và sau đó nó đã hoạt động .

enter image description here

Cảm ơn bạn đã giúp tôi đi đúng hướng!

+0

Yup, đây là bản sửa lỗi. Mỗi khi tôi cài đặt lại Netbeans, tôi gặp vấn đề này, và sau đó vấp phải câu trả lời này để sửa nó: D – CodedMonkey

+0

Đây là câu trả lời đúng. Cứu tôi vài giờ. Đối với phiên bản Netbeans khác, hãy thay thế bằng phiên bản của bạn. – Jus12

+0

Điều này phải được đánh dấu là câu trả lời đúng. – Subash

0

Sự cố thiết lập của tôi hóa ra nằm trong dự án tôi đã bao gồm dưới dạng thư viện. Nó vẫn có thư mục CopyLibs-2 và không phải là thư mục CopyLibs đã nâng cấp nhưng nblibraries.properties có các công cụ libs.CopyLibs được nâng cấp. Tôi không biết làm thế nào để kích hoạt các nâng cấp để thay vào đó tôi đã làm như sau:

  1. Deleted lib/CopyLibs-2
  2. phải nhấp thư mục Libraries và chọn Add Library.
  3. Imported CopyLibs công tác
  4. Added CopyLibs công tác thư viện

Điều này làm CopyLibs hiển thị trong thư mục Libraries của tôi mà dường như một chút lạ bởi vì nó thường ẩn như jnlp ai, nhưng nó làm việc mà không cần phải toàn cầu libs.CopyLibs.classpath được đặt tại Tools> Java> Ant Properties.

Mất vài lần để xóa nội dung đúng cách và thêm nội dung đó. Đôi khi nó sẽ thêm nhưng sau đó hiển thị một vấn đề và thông báo giải quyết sẽ là thư viện '' CopyLibs '' có các mục bị thiếu 'và' Vấn đề: Dự án sử dụng thư viện lớp có tên là "CopyLibs" nhưng các mục classpath của thư viện này bị thiếu '. Tôi không hiểu tại sao toàn bộ quá trình lại quá cầu kỳ và huyền diệu.

Tôi cũng nhận thấy trên cam kết rằng IDE đã được cập nhật project.properties của tôi để thay đổi javac.classpath từ không có gì đến $ {} libs.CopyLibs.classpath

0

Background Thông tin: Các tính chất Ant được tổ chức trong xây dựng. tập tin thuộc tính trong một thư mục người dùng. Điều này thay đổi phụ thuộc vào nền tảng nhưng có thể được tìm thấy bằng cách tìm trong tệp nbproject/private/private.properties. Sau đó nhìn vào đường dẫn dưới user.properties.file và có một cái nhìn trong tệp được trỏ tới - bạn có thể thấy các đường dẫn được sử dụng trong bản dựng Ant - và liệu chúng có đúng không.

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