Đây là câu hỏi thực sự ngớ ngẩn mà tôi không thể trả lời một câu trả lời khác.cấu trúc nội bộ chính xác của tệp JAR
Bối cảnh.
Tôi đang sử dụng Eclipse (với một trong các plugin ANT, trên thiết bị đầu cuối XP).
Tôi vừa bắt đầu chơi với ANT, trong [jar] chỉ thị tôi đang thiết lập vị trí của tập tin JAR thành của tôi và tôi nhận được sau khi tôi giải nén 'file
META-INF/MANIFEST. MF MyMainFile.class
phù hợp với nội dung được tìm thấy trên trang web oracle cho cấu trúc bên trong. (ở đây http://docs.oracle.com/javase/tutorial/deployment/jar/view.html)
Nhưng khi tôi cố gắng chạy tệp, tôi gặp lỗi 'không tìm thấy lớp chính'?
Tôi đã thấy một số bài viết khác, nơi người ta đã 'giải nén' các tập tin JAR và kết thúc với một cấu trúc trong các cách sau ...
META-INF/MANIFEST.MF dtvcontrol/DTVControlApp.class
(từ đây http://www.coderanch.com/t/528312/java/java/standalone-application)
Vì vậy, tôi sẽ nhận được một cấu trúc nơi các tập tin lớp học của tôi đang ở trong một thư mục phản ánh tên của gói ... ví dụ
META-INF/MANIFEST.MF MyPackage/MyMainFile.class
và nếu vậy, tại sao tôi nhận được cấu trúc không đúng bằng cách sử dụng ANT hoặc tại sao có 2 cấu trúc nội bộ 'chính xác' khác nhau? (cách chỉ định lớp chính và classpath cho mỗi/kiểm soát những gì tôi nhận được)
Cũng trong trường hợp bạn quan tâm, trong trạng thái tệp MANIFEST (xây dựng bằng ANT) [tên thuộc tính = giá trị "Main-Class" = "MyPackage.MyMainFile" /]
Ngoài ra cấu trúc thư mục của gói đang được xây dựng như sau ...
/JavaDev/MyTestPackage/src (chứa các file nguồn) // JavaDev/MyTestPackage/bin (có chứa các tập tin lớp học từ nhật thực, hoặc từ nhiệm vụ ANT JAVAC, tôi đã đặt tên nó sai? Tôi có nên gọi nó là xây dựng không?)
Hơn nữa, khi tạo jar Tôi không đặt tên nó là 'MyTestPackage.jar' nhưng chỉ đơn giản là 'test.jar' có thể gây ra vấn đề không? Tôi cho rằng không phải là tôi hiểu rõ đó là những gì mà những thứ [định nghĩa] chính là tất cả.
Tiếp tục để tất cả điều này ...
'MyTestPackage' là actualy một lỗi nhỏ về hình ảnh thư viện tin nhắn mà tôi sử dụng ở những nơi khác, và tôi có một tập tin thứ hai mà có một lớp chính để sử dụng để thử nghiệm. Như vậy nó trỏ đến các thư viện khác nhau (tôi có cần sao chép tất cả các thư viện SWT vào một thư mục được chỉ định không?
Tôi đã đọc ở đâu đó nếu tôi tải thư viện vào lớp chính của mình (tôi rõ ràng là mở cửa sổ) thì cố gắng chạy chương trình sẽ không thành công trên 'lớp chính không tìm thấy' nếu tôi sử dụng chúng cũng đúng cho việc thêm vào bất kỳ thành viên 'cuối cùng tĩnh' nào (mà tôi sử dụng cho loggin của các lỗi).
'Sự cố tĩnh' ... Tôi đã cố điều chỉnh đường dẫn lớp trong ANT và tôi gặp phải một số lỗi khác cho kết nối với Log4J và 'wrapper' mà tôi sử dụng (để thực hiện nhập sai), nhưng các thư viện tồn tại nơi chúng nên được đặt trong classpath).
tôi cảm thấy như tôi gần như có .... nhưng không hoàn toàn ...
tôi đang làm điều này cho 'dự án thư viện' nhỏ mà tôi đang tạo ra với mục đích của việc sử dụng MAVAN cho chính gói bên ngoài sẽ kết nối tất cả chúng với nhau ... bây giờ tuy nhiên tôi chỉ muốn có được điều này đi để nó hoạt động.
Tôi có thể cung cấp nguồn đầy đủ hoặc bất kỳ thông tin nào khác theo yêu cầu.
Cảm ơn trước ...
David
vikiiii Tôi sẽ đưa vào một nhận xét ranh mãnh hỏi có bao nhiêu 'mắt' bạn có ... nhưng quyết định không (chú ý 3 "." Không phải một, không phải hai). ;) – DaveM