2009-11-03 40 views
36

Tôi muốn cập nhật một tệp .class trong một số jar bằng một cái mới. Cách dễ nhất để làm điều đó, đặc biệt là trong IDE Eclipse là gì?Đang cập nhật tệp .class trong jar

+3

Bạn đã thử 'jar --help' –

Trả lời

52

This tutorial chi tiết làm thế nào để cập nhật một file jar

jar uf jar-file input-file(s) 

nơi 'u' có nghĩa là cập nhật.

+3

Trong lệnh này: Tùy chọn u cho biết bạn muốn cập nhật tệp JAR hiện có. Tùy chọn f cho biết tệp JAR cần cập nhật được chỉ định trên dòng lệnh. tệp jar là tệp JAR hiện có sẽ được cập nhật. (các) tệp đầu vào là một danh sách được phân tách bằng dấu cách của một hoặc nhiều tệp mà bạn muốn thêm vào tệp Jar. – Nishantha

+1

Tôi muốn cập nhật tệp thuộc tính cho một vị trí cụ thể, lý tưởng nên có hai tham số 'nguồn' và' đích'. Đối với tôi 'tập tin đầu vào (s)', nhưng đâu là 'nguồn'? –

+0

@ShashiRanjan bạn đã tìm ra giải pháp chưa ?? – Dinesh

11

Bạn có muốn thực hiện tự động hoặc thủ công không? Nếu thủ công, tệp JAR thực sự chỉ là tệp ZIP, vì vậy bạn có thể mở tệp bằng bất kỳ trình đọc ZIP nào. (Bạn có thể cần phải thay đổi phần mở rộng đầu tiên.) Nếu bạn muốn tự động cập nhật tệp JAR qua Eclipse, bạn có thể muốn xem xét hỗ trợ Ant trong Eclipse và xem zip task.

6

Jar là một tệp lưu trữ, bạn có thể tự thay thế tệp trong trình quản lý tệp yêu thích của mình (Tổng số chỉ huy).

0

1), bạn có thể trích xuất các tập tin vào một thư mục có tên

jarname.jar

và sau đó thay thế các tập tin trong thư mục, thuận tiện nếu bạn đang cập nhật lớp rất nhiều trong khi gỡ lỗi

2) bạn có thể trích xuất các lọ thay thế các tập tin sau đó jar nó lên một lần nữa

3) Mở jar với 7 zip và kéo và thả y lớp mới của chúng tôi để sao chép qua lớp cũ

10

Chỉ cần kéo và thả tệp lớp mới của bạn vào JAR bằng cách sử dụng 7-Zip hoặc Winzip. Bạn thậm chí có thể sửa đổi tệp JAR được bao gồm trong tệp WAR bằng biểu tượng thư mục mẹ và nhấp Ok khi 7zip phát hiện tệp bên trong đã được sửa đổi

+0

Sử dụng WinZip, bạn phải mở nó bằng cách khởi động WinZip lần đầu tiên, sau đó kéo tệp jar vào cửa sổ WinZip. – awe

+1

7z trên Windows không tôn trọng chữ hoa/chữ thường, tức là nó sẽ thay thế cả CA.class và Ca.class –

-1

Cách khác là không thay thế tệp .class trong bình tập tin. Thay vào đó hãy đặt nó vào một tệp jar mới và đảm bảo rằng nó xuất hiện trước đó trên đường dẫn lớp của bạn hơn tệp jar ban đầu.

Không chắc chắn tôi sẽ giới thiệu điều này cho phần mềm sản xuất nhưng để phát triển nó nhanh chóng và dễ dàng.

6
  1. Sử dụng jar -xvf để trích xuất tệp vào thư mục.
  2. Thực hiện thay đổi và thay thế các lớp học.
  3. Sử dụng jar -cvf để tạo tệp jar mới.
2

Tệp JAR chỉ là một .zip trong ngụy trang. Thư mục nén có chứa .class tệp.

Nếu bạn đang ở trên MacOS:

  1. Đổi tên tập tin để có phần mở rộng '.zip'. ví dụ. myJar.jar -> myJar.zip.
  2. Giải nén '.zip' (nhấp đúp vào nó).Một thư mục mới có tên 'myJar' sẽ xuất hiện
  3. Tìm và thay thế tệp .class bằng tệp .class mới của bạn.
  4. Chọn tất cả nội dung của thư mục 'myJar' và chọn 'Nén x mục'. KHÔNG ZIP thư mục chính nó, CHỈ NỘI DUNG CỦA NÓ

Miscellaneous - Biên soạn một file .class duy nhất, với tham chiếu đến một lọ ban đầu, trên hệ điều hành MacOS

  1. Thực hiện một tập tin myClass.java , chứa mã của bạn.
  2. Mở thiết bị đầu cuối từ Spotlight.
  3. javac -classpath originalJar.jar myClass.java Điều này sẽ tạo lớp được biên dịch của bạn có tên là myClass.class.

Từ đây, hãy làm theo các bước ở trên. Bạn cũng có thể sử dụng Eclipse để biên dịch nó, chỉ cần tham khảo jar gốc bằng cách nhấp chuột phải vào dự án, 'Build Path' -> 'Add External Archives'. Từ đây bạn sẽ có thể biên dịch nó như một cái bình, và sử dụng kỹ thuật zip ở trên để lấy lớp từ lọ.

0

Chỉnh sửa thuộc tính/tệp my_app.properties trong jar:

"zip -u /var/opt/my-jar-with-dependencies.jar properties/my_app.properties". Về cơ bản "zip -u <source> <dest>", trong đó dest có liên quan đến thư mục trích xuất jar.

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