2009-07-27 53 views
8

Tôi có hai cuộc chiến tranh, foo.war và bar.war. foo sử dụng các lớp từ thanh. Tôi đang cố gắng để bắt đầu foo, và thêm vào classpath của Java classpath, nhưng java ném một ClassNotFoundException.Thêm WAR vào đường dẫn lớp của Java

Nếu tôi đổi tên bar.war thành bar.jar và chỉnh sửa cấu trúc thư mục của nó trông giống như một cái bình, nó hoạt động.

tài liệu của Java trên switch-CP không đề cập đến các file chiến tranh:

-classpath <class search path of directories and zip/jar files> 
       A ; separated list of directories, JAR archives, 
       and ZIP archives to search for class files. 
+0

Tôi có một vấn đề tương tự với điều này - Tôi có hàng tá lọ và hàng tá tệp cấu hình bị đổ vào cuộc chiến và muốn chạy kịch bản lệnh bằng cách sử dụng "Classpath" của tôi và có tất cả chỉ làm việc. Luôn luôn có lựa chọn thay thế, nhưng điều này sẽ là cách linh hoạt nhất và đã có thể tiết kiệm cho tôi ngày làm việc có thể ... Oh, vào giải pháp tiếp theo. 1 cho câu hỏi anyway - đã cứu tôi một thời gian. –

Trả lời

15

Tệp WAR có nghĩa là toàn bộ ứng dụng web, không phải thư viện. Họ chứa thư viện, nhưng bản thân họ là ứng dụng.

Một ứng dụng web không nên phụ thuộc vào ứng dụng khác. Chúng có thể phụ thuộc vào cùng một thư viện, nhưng không phụ thuộc vào nhau.

Về cơ bản giải nén chức năng chung, biến nó thành thư viện (dưới dạng tệp jar) và bao gồm tệp jar đó trong cả hai tệp WAR hoặc thêm nó vào một phần chung của đường dẫn lớp.

+0

Đã cố gắng tránh một dự án khác trong danh sách dự án đang phát triển của chúng tôi. Oh well. – ripper234

0

Cấu trúc của một tập tin chiến tranh là rất khác nhau sau đó một lọ vì vậy nó không làm việc. Các tệp lớp Java được giữ bên trong thư mục lớp của WAR trong khi Jar trực tiếp có các tệp lớp Java. Tại sao bạn không thêm thư mục nơi bạn có các tệp lớp Java của bar.war?

Bạn đang cố gắng đạt được điều gì?

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