2013-08-09 72 views
26

Tôi có một cấu trúc thư mụcCách tạo tệp jar với cấu trúc gói?

/com/cdy/ws/a.class files 
/com/cdy/ws/b.class files 
/com/cdy/ws/c.class files 

Khi tôi chạy lệnh “jar CVF asd.jar * .class” sau nó mang lại cho jar với tất cả các file class. Nhưng cấu trúc thư mục không được tạo. Tất cả các tệp lớp phải nằm trong “com.cdy/ws” nhưng tất cả các lớp đều ở cùng cấp độ của META-INF. Bất cứ ai có thể cho tôi biết lệnh để tạo cấu trúc gói là gì?

Cảm ơn

Trả lời

55

Bạn cần để bắt đầu tạo JAR tại gốc của các tập tin.

Vì vậy, ví dụ:

jar cvf program.jar -C path/to/classes . 

Đó là giả định rằng path/to/classes chứa các thư mục com.

FYI, những ngày này nó là tương đối phổ biến cho hầu hết mọi người sử dụng lệnh jar trực tiếp, vì họ sẽ sử dụng một công cụ xây dựng như Ant hoặc Maven để chăm sóc đó (và các khía cạnh khác của việc xây dựng). Nó cũng rất đáng để cho phép một trong những công cụ này chăm sóc mọi khía cạnh của công trình xây dựng của bạn, và nó thậm chí còn dễ dàng hơn với một IDE tốt để giúp viết build.xml (Ant) hoặc pom.xml (Maven).

+13

Tôi đã nhầm lẫn trước câu trả lời này. Làm cho nó thêm một chút bê tông có thể giúp người khác: Nếu các tệp lớp của bạn nằm trong thư mục 1/folder2/folder3/com/example/test và bạn muốn cấu trúc gói là com.example.test, lệnh phải là 'jar cvf program.jar -C folder1/folder2/folder3 .' (Thời gian là một phần của lệnh, tất nhiên.) – hBrent

+0

@Adam Batkin Xin vui lòng bạn có thể giúp tôi xây dựng một lọ từ mã souce này https://github.com/upictec /org.json.me Tôi đã thử hướng dẫn của bạn. Tôi thậm chí đã cài đặt maven, nhưng vẫn không thể lấy jar: S – eddy

+0

@eddy Dự án của bạn xây dựng một JAR là target/json-1.0.jar - nhưng tôi không thể làm cho nó hoạt động trừ khi tôi xóa toàn bộ ' 'cặp thẻ và mọi thứ bên trong chúng –

9

Bạn muốn

$ jar cvf asd.jar . 

để xác định thư mục (ví dụ .) để jar từ. Điều đó sẽ duy trì cấu trúc thư mục của bạn trong tệp jar.

7

Từ thư mục chứa các thư mục com:

$ jar cvf asd.jar com 
added manifest 
adding: com/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/a.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/b.class(in = 0) (out= 0)(stored 0%) 
adding: com/cdy/ws/c.class(in = 0) (out= 0)(stored 0%) 

$ jar -tf asd.jar 
META-INF/ 
META-INF/MANIFEST.MF 
com/ 
com/cdy/ 
com/cdy/ws/ 
com/cdy/ws/a.class 
com/cdy/ws/b.class 
com/cdy/ws/c.class 
+1

Cảm ơn .. Tôi có cấu trúc gói sau khi chạy lệnh trên :) – user2532663

+0

@Daniel Xin bạn có thể giúp tôi xây dựng một jar từ mã souce này github.com/upictec/org.json.me Tôi đã thử hướng dẫn của bạn. Tôi thậm chí đã cài đặt maven, nhưng vẫn không thể lấy được cái bình: S – eddy

2

mã bên dưới này đã cho tôi đúng phản ứng

jar cvf MyJar.jar *.properties lib/*.jar -C bin . 

nó thêm file (log4j) tài sản, nó thêm vào các tập tin jar trong lib. và sau đó nó đi vào trong thùng để lấy các tệp lớp với gói.

7

Bước 1: Chuyển đến thư mục nơi các lớp được lưu giữ bằng dấu nhắc lệnh (hoặc dấu nhắc trình bao Linux)
Giống như cho Dự án.
C:/workspace/MyProj/bin/classess/com/test/*.class

Go thư mục bin sử dụng lệnh:

cd C:/workspace/MyProj/bin 

Bước 2: Sử dụng dưới lệnh để tạo ra file jar.

jar cvf helloworld.jar com\test\hello\Hello.class com\test\orld\HelloWorld.class 

Sử dụng lệnh trên, các lớp sẽ được đặt trong một cái bình trong cấu trúc thư mục.

2

Thư mục bạn chỉ định phải nằm trên C:\Program Files\Java\jdk1.7.0_02\bin đường dẫn Tên người dùng có tệp lớp.

C:\Program Files\Java\jdk1.7.0_02\bin>jar cvf program1.jar Foldername 

Bây giờ program1.jar sẽ tạo ra trong C: \ Program Files \ Java \ jdk1.7.0_02 \ bin đường

0

Đơn giản chỉ cần hơn ở trên -

  1. Giữ nội dung Java đóng gói của bạn bên trong một thư mục và đảm bảo không có gì bên trong ngoại trừ các gói Java của bạn và các lớp Java tương ứng của chúng.

  2. Open Command (Nếu Windows) Prompt, đạt đến đường dẫn thư mục chứa như dưới đây -

    C:>cd "C: \ Users \ UserABC \ Downloads \ Current Folder"

    C : \ Users \ UserABC \ Downloads \ Folder hiện tại>jar cvf hello-world-1.0.1.jar .

0

để tránh để thêm các tập tin nguồn .java để gói của bạn, bạn nên làm

cd src/ 
jar cvf mylib.jar com/**/*.class 

Giả sử cấu trúc dự án của bạn là như

myproject/ 
    src/ 
     com/ 
     mycompany/ 
      mainClass.java 
      mainClass.class