2009-01-27 26 views
20

Làm cách nào để định cấu hình đường dẫn dự án của tôi để có tập hợp các tệp .jar nằm trong cùng một thư mục được tự động bao gồm trong đường dẫn xây dựng? Có nghĩa là thêm tệp .jar mới vào thư mục này (và làm mới dự án) sẽ cập nhật đường dẫn xây dựng? Rem: Tôi không làm việc trong một ứng dụng Web nhưng trong một ứng dụng Java độc lập. Tôi biết rằng nó có thể trong một dự án Web động để có tất cả các .jars nằm trong WEB-INF/lib để được bao gồm trong đường dẫn xây dựng. Có thể thực hiện loại tương tự nhưng trong ứng dụng độc lập không?Eclipse buildpath tự động lấy tất cả các JAR của một thư mục nội bộ

Tôi đang sử dụng Eclipse 3.4

Trả lời

-2

Bạn đã thử sử dụng ký tự đại diện trong đường dẫn lớp chưa? Vì vậy, bạn sẽ sử dụng một cái gì đó như: java

javac MyApp.java -cp /some/path/to/libraries/*.jar 

Tôi đã không được sử dụng trong một thời gian vì vậy không chắc chắn nếu là ở trên có thể, nhưng đó là những gì tôi mong chờ để được cú pháp.

11

AFAIK, không có cách nào bình thường để thực hiện việc này.

Nếu bạn thực sự muốn, có một chút hack. Eclipse .classpath file là một XML rất đơn giản. Bạn có thể viết một kịch bản hoặc tác vụ kiến ​​đi qua một thư mục, cập nhật .classpath xml và làm mới dự án.

+4

+1. Tôi không chắc chắn tại sao bạn đã downvoted cho điều này. Tôi đã làm một cái gì đó tương tự và nó đã làm việc, hoàn hảo. Để tiến xa hơn một bước, bạn có thể thêm tập lệnh của mình làm trình tạo nên nó được kích hoạt tự động bất cứ khi nào dự án được làm sạch ... – gMale

1

Nghĩa là thêm một file .jar mới để thư mục này (và làm mới các dự án ) cập nhật buildpath

Xin lỗi, Eclipse không hỗ trợ này.

9

Sử dụng một tự chế "classpath Container" giải quyết vấn đề nhưng cần bạn để xây dựng một Eclipse plugin: http://www.ibm.com/developerworks/edu/os-dw-os-eclipse-classpath.html

+0

chính xác câu trả lời đúng - hộp chứa classpath khá dễ viết nhưng bạn cần phân phối plugin cho phần còn lại của nhóm của bạn sử dụng –

2

Sử dụng Maven2, và sử dụng các plugin Eclipse Maven2.

+0

Hoặc Ivy với plugin IvyDE. – gMale

0

Trên máy tính cửa sổ, bạn có thể làm những gì uzhin nói với một lớp lót trên dòng lệnh.

Giả sử bạn đã thiết lập một biến trong Eclipse có tên là AXIS2_HOME trỏ tới c: \ javalibs \ axis2-1.4.1, ví dụ này sử dụng lệnh "for" để lặp lại tất cả các tệp .jar trong c: \ javalibs \ axis \ lib thư mục và ghi các nút .classpath một tập tin gọi là addto.classpath. (Lưu ý: Nhân vật carat^thoát khỏi sự < và> trên dòng lệnh để họ không làm những gì họ thường làm.)

for %i in (c:\javalibs\axis2-1.4.1\lib\*.jar) do @echo  ^<classpathentry kind="var" path="AXIS2_HOME/lib/%~ni%~xi"/^> >> addto.classpath 

Bạn kết thúc với một cái gì đó như thế này trong các tập tin ...

<classpathentry kind="var" path="AXIS2_HOME/lib/activation-1.1.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/annogen-0.1.0.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-api-1.2.7.jar"/> 
<classpathentry kind="var" path="AXIS2_HOME/lib/axiom-dom-1.2.7.jar"/> 
... 

Vì vậy, bạn có thể sao chép các dòng đó và dán chúng vào vị trí hiển nhiên trong tệp .classpath thực tế.

0

Tôi đang sử dụng giải pháp thay thế mà tôi đã phát triển sau khi đọc similar question. Tôi đang đăng nó ở đây, bởi vì câu hỏi đó có một chút khác biệt phạm vi và nó có thể không được rõ ràng làm thế nào để sử dụng các đề xuất được viết ở đó.

  1. Tạo dự án web động mới (cài đặt mặc định là ok vì vậy nó rất nhanh)
  2. thư mục Xóa "lib" dưới WebContent/WEB-INF/
  3. Tái thư mục đó, nhưng tạo ra nó như liên kết đến thư mục trong dự án chính của bạn, nơi lọ của bạn đang nằm
  4. Kiểm tra Web App Libraries tùy chọn trên theo thứ tự và tab Xuất trong Java Xây dựng thiết lập đường dẫn của dự án của bạn
  5. Thêm này dự án mới được tạo ra như một phụ thuộc vào dự án chính của bạn

Thật khó chịu khi thực hiện việc này cho mọi thư mục lib trong dự án của bạn nhưng tốt hơn là thêm bình bằng tay mỗi khi bạn cập nhật svn (từ đồng nghiệp may mắn của bạn bằng cách sử dụng Idea). Thật là xấu hổ khi Eclipse không có tính năng này.

5

Đồng nghiệp của tôi thực hiện một container classpath mà recursivly tìm kiếm lọ trong một thư mục nhất định trong không gian làm việc, có một cái nhìn tại http://openscada.org/2010/05/31/adding-a-directory-as-class-path-to-eclipse/

Các trang web cập nhật có thể được tìm thấy tại http://repo.openscada.org/p2/bob/R

Plugin được cấp phép unter LGPL V3 và bạn có thể tìm thấy mã nguồn dưới https://github.com/ctron/org.openscada.bob

+0

Cố định liên kết đã chết đến bài viết. Đây chính xác là những gì tôi đang tìm kiếm! –

+0

cảm ơn bạn, tôi cũng đã sửa liên kết svn, chúng tôi chuyển sang git một số thời gian trước đây – Mauli

0

Bạn có thể sử dụng Thư viện người dùng trong Eclipse có thể là một cách hữu ích để tổ chức một bộ tệp jar. Nếu bạn có một tập hợp các tệp jar mà bạn sử dụng trong một số dự án, bạn có thể tạo một Thư viện người dùng để tham chiếu tập hợp các tệp jar. Kết quả là, tất cả những gì bạn cần đưa vào đường dẫn xây dựng của dự án là Thư viện người dùng chứ không phải tất cả các tệp jar riêng lẻ.

<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/User Library name"/> 

http://www.avajava.com/tutorials/lessons/what-is-a-user-library-and-how-do-i-use-it.html;jsessionid=ACD75E0A035BDC3AC656B481A7830FB6

+1

Vấn đề duy nhất với điều này là đường dẫn đến tệp jar trong thư viện người dùng phải tuyệt đối. Điều này gây ra các vấn đề trong môi trường nhóm (kiểm soát phiên bản), nơi mọi người có các đường dẫn tuyệt đối khác nhau đến không gian làm việc của họ. Để khắc phục điều này, bạn có thể tạo một biến thể CLASSPATH VARIABLE nhưng sau đó mọi người phải tạo biến và mọi thứ trở nên khó hiểu, nhanh chóng. – gMale

0

tôi đã xây dựng một công cụ tạo ra các classpath (và .project), nhưng nó đòi hỏi bạn phải xác định danh sách các lọ trong xây dựng kiến ​​của bạn. Nó có thể có thể được mở rộng để đọc một danh sách các tập tin jar.

http://sweetened.googlecode.com/

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