2009-11-07 53 views
22

Câu hỏi này là về phát triển Eclipse, tôi đang cố gắng tạo một ứng dụng web trong Eclipse, vấn đề là tôi không nhận được các lọ phụ thuộc vào kho lưu trữ được triển khai.Phụ thuộc dự án Web Eclipse

Tôi đã tạo một dự án web động mới và liên kết nó với một dự án Java khác. Dự án Java tham chiếu đến một vài lọ bên thứ 3 (ví dụ: các lọ mùa xuân) nhưng vì một số lý do khi xuất bản dự án web, tôi chỉ nhận được jar dự án Java trong thư mục lib của cuộc chiến, không phụ thuộc vào dự án Java (ví dụ: đàn bà).

Nói cách khác, tôi có dự án A (dự án web) phụ thuộc vào dự án B (Dự án Java), dự án B phụ thuộc vào lọ mùa xuân. Khi tôi xuất bản dự án web như một cuộc chiến cho JBoss chỉ dự án B được đóng gói vào bình (không có chum lò xo)

Tôi biết tôi có thể làm điều đó với kiến, thậm chí tôi có build.xml để xây dựng toàn bộ ứng dụng, nhưng tôi suy nghĩ nhật thực cũng có thể thực hiện nhiệm vụ đóng gói cho tôi.

Tôi đã thêm dự án Java vào các phụ thuộc mô-đun Java EE trong dự án web.

Tôi có nên sử dụng tùy chọn xuất trong thuộc tính đường dẫn xây dựng dự án Java không? Tôi có nên thêm các phụ thuộc của dự án Java vào dự án web không?

Tôi đang làm gì sai?

Sửa: Tôi đang sử dụng Eclipse 3.5.1

+0

Cũng xem xét câu hỏi này: http://stackoverflow.com/questions/1691553/java-web-project-referencing-another-java-project. –

+1

Tôi đã nhìn thấy câu hỏi này, việc thêm phụ thuộc vào phụ thuộc vào mô-đun Java EE không giải quyết được vấn đề của tôi – LiorH

+0

Bạn có thể cần thêm các lọ Spring vào danh sách các phụ thuộc của dự án web. Chúng có thể không có tính chuyển tiếp. – nitind

Trả lời

47
  1. Tới dự án web tính chất.
  2. Hội triển khai (Bên trái).
  3. Thêm> Chọn dự án> Chọn dự án lib của bạn> Chọn "Lắp ráp các dự án vào thư mục WEB-INF/lib của ứng dụng web" nếu không được chọn> Hoàn tất.
  4. Đường dẫn xây dựng Java (Bên trái)> Tab dự án> Thêm ...> Chọn dự án lib của bạn> OK
  5. Đường dẫn xây dựng Java (Bên trái)> Tab đặt hàng và xuất> Chọn dự án lib của bạn.
  6. Lưu
  7. Bây giờ nó hoạt động.
0

Bạn nên được đóng gói ứng dụng web của bạn vào một tập tin WAR trước khi triển khai nó. Phải có một cách để nói cho Eclipse biết các tệp JAR nào bạn muốn nó đặt trong thư mục WEB-INF/lib. Nếu không, hãy viết một tệp tin build.xml của Ant để thực hiện nó cho bạn.

Bạn không cần phải sửa đổi bất kỳ biến classpath nào trong môi trường của bạn hoặc máy chủ ứng dụng. Cách đúng đắn để làm điều đó là tạo một tệp WAR thích hợp.

UPDATE: Tôi đọc lại câu hỏi của bạn:

nhưng đối với một số lý do khi công bố dự án web tôi nhận được chỉ là jar dự án java trong thư mục lib của JBoss, mà không phụ thuộc jar của nó (egSpring) .

Điều này có nghĩa là gì? Bạn không nên đặt bất cứ thứ gì vào thư mục JBOSS/lib. Toàn bộ điểm của tệp WAR là nó là một tạo phẩm tự chứa chứa tất cả các phụ thuộc của nó. Nếu bạn đang cố gắng để viết các công cụ vào thư mục JBOSS/lib, bạn đang làm sai.

Tệp WAR cần phải đi vào miền bạn thiết lập. Không cần phải thay đổi máy chủ ứng dụng.

+0

Tôi có một kịch bản kiến ​​làm tốt, vấn đề là thời gian phát triển, tôi muốn đóng gói và xuất bản nó từ nhật thực (và sau đó tất nhiên gỡ lỗi ứng dụng) – LiorH

+0

Eclipse sẽ có thể làm điều đó mà không cần Ant. Nếu nó không thể, có được một IDE thực và tải IntelliJ. Nó quản lý tất cả các công cụ này đẹp mắt. – duffymo

+0

bạn có quyền cập nhật, tôi có nghĩa là thư mục lib của tập tin chiến tranh (theo WEB-INF) và không phải là thư mục lib JBoss của khóa học. Tôi đã sửa mô tả câu hỏi, cảm ơn. – LiorH

0

Nếu tôi hiểu bạn một cách chính xác vấn đề là nếu bạn sử dụng dự án A do đó phụ thuộc vào dự án B bạn không nhận được các hiện vật từ dự án B nhưng chỉ A.

Vấn đề là dự án của bạn phải liệt kê Tất cả những thứ cần thiết trong Properties -> phụ thuộc vào mô-đun Java EE, là một cơ chế riêng biệt từ các dự án xuất khẩu thông thường. Có thể bạn sẽ cần thực hiện một số thử nghiệm.

2

Tôi đã thêm dự án Java vào phụ thuộc mô-đun Java EE trong dự án web.

Nếu mục đích là để có sự phụ thuộc (đọc: tập tin JAR/dự án/etc) của dự án khác vào classpath thời gian chạy của các dự án hiện tại , sau đó chỉ cách đó không làm việc . Bạn cần định cấu hình dự án khác để xuất phụ thuộc của nó. Nó được thực hiện bằng tab Order and Export trong thuộc tính đường dẫn xây dựng. Hi vọng điêu nay co ich.

2

Cũng lưu ý lỗi này được báo cáo trên WTP Eclipse, điều này đôi khi ngăn không cho các phụ thuộc của bạn được triển khai vào WEB-INF/lib, ngay cả khi bạn đã định cấu hình đúng mọi thứ. Thở dài.

Bug 312897 - Deployment feature doesn't deploy classpath dependencies.

Theo tôi được biết, để sử dụng một JAR tại thời gian biên dịch trong Eclipse và chắc chắn rằng nó cũng có sẵn tại thời gian chạy trong appserver, bạn:

  • Thêm JAR để xây dựng con đường của bạn
  • Đánh dấu JAR như là một module phụ thuộc EE xuất khẩu

Nếu bạn cần JAR đó là cần thiết bởi một dự án mà bạn đang sử dụng , Cá nhân tôi sẽ liệt kê chúng như là các phụ thuộc rõ ràng trong đường dẫn xây dựng và cũng thêm chúng vào các phụ thuộc mô-đun được xuất khẩu.

Nhưng đừng lấy câu trả lời của tôi tại mệnh giá như tôi stumbled khi bài này trong khi tìm kiếm lý do tôi nhận được lỗi NoClassDefFound trong dự án Eclipse của tôi ...;)

4

Tôi biết nó được bốn năm kể từ khi bài cuối cùng, và có thể tùy chọn này không có sẵn trở lại sau đó, nhưng đây là những gì làm việc cho tôi:

  1. Đến Web Project-> Properties
  2. Triển khai hội
  3. Sử dụng nút 'Add' để thêm phụ thuộc dự án của bạn
  4. tới dự án-> Properties cho dự án bạn đang tùy thuộc vào
  5. Deployment Assembly
  6. Sử dụng nút 'Thêm' để thêm phụ thuộc thư viện thời gian chạy của dự án
  7. Dự án web-> Chạy dưới dạng ..-> Chạy trên máy chủ và nó hoạt động với tôi

Được cảnh báo rằng các bước 4-6 sẽ có nghĩa là nếu bạn đang dùng nhật thực để xây dựng tệp jar, bây giờ nó sẽ bao gồm thư viện phụ thuộc của bạn trong bình đó.

Nhờ rodgarcialima vì đã giúp tôi có được đến bước 3.

+0

Xin chào George, có cách nào khác để làm cho thư viện dự án tham chiếu được sao chép vào dự án web không? –

+0

Làm thế nào về khi chúng ta xây dựng tập tin chiến tranh và cần các dự án khác để đưa vào? – Niamath

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