Khác

Mac Làm cách nào để sửa đổi tệp java .jar?

NS

dudleybrooks

Áp phích gốc
Ngày 4 tháng 4 năm 2011
San Francisco
  • Ngày 14 tháng 4 năm 2011
Tôi cần thực hiện một sửa đổi đơn giản trong ứng dụng (Thunderbird.app) - thay đổi một dòng trong tệp .jar. Trên máy tính Windows cũ của mình, tôi biết mình phải sử dụng phần mềm nào. Cách dễ nhất trong Snow Leopard để mở, sửa đổi và lưu tệp .jar trong ứng dụng là gì? Ưu tiên sử dụng những thứ được tích hợp sẵn trong Hệ điều hành; nếu không, sau đó sử dụng phần mềm miễn phí?

jiminaus

Ngày 16 tháng 12 năm 2010


Sydney
  • Ngày 15 tháng 4 năm 2011
Tệp .jar chỉ là tệp .zip có phần mở rộng khác (và một số bố cục tiêu chuẩn / xác định trước). Bạn có thể sử dụng các chương trình zip và giải nén tiêu chuẩn trong / usr / bin để thay đổi tệp .jar, giả sử nó chưa được ký.

'Thay đổi một dòng trong tệp .jar' không trực tiếp có ý nghĩa trong ngữ cảnh của tệp .jar. Nếu bạn cho chúng tôi biết chính xác những gì bạn muốn làm với tệp .jar đó, chúng tôi có thể cho bạn biết bạn có thể sử dụng những công cụ / chương trình Mac OS X nào và làm như thế nào. NS

mufflon

Ngày 15 tháng 9 năm 2006
  • Ngày 15 tháng 4 năm 2011
Được đăng không dây (Mozilla / 5.0 (iPhone; U; CPU iPhone OS 4_2_1 như Mac OS X; sv-se) AppleWebKit / 533.17.9 (KHTML, như Gecko) Phiên bản / 5.0.2 Mobile / 8C148 Safari / 6533.18.5)

Thực sự có ba giai đoạn: trích xuất, sửa đổi và lắp ráp nó lại với nhau.

Giải nén rất dễ dàng: nhấp chuột phải và nhấp vào bỏ lưu trữ (afaik).

Sửa đổi: nếu đó là tệp kê khai (loại bỏ lớp để chạy, v.v.) thì thật dễ dàng, tuy nhiên các tệp java được biên dịch thành tệp .class và sẽ cần tháo gỡ trước khi sửa đổi.

Để ghép mọi thứ lại với nhau, hãy google lệnh 'jar' cho thiết bị đầu cuối.

Nếu là phần mềm nguồn mở thì tốt hơn và dễ dàng hơn để biên dịch từ nguồn; nếu không thì tôi không nghĩ nó hợp pháp 100%. NS

dudleybrooks

Áp phích gốc
Ngày 4 tháng 4 năm 2011
San Francisco
  • Ngày 15 tháng 4 năm 2011
Tôi cần thay đổi một dòng trong tệp .js có trong tệp .jar. Nhưng câu trả lời của bạn làm rõ câu hỏi của tôi:

Tôi đã thực hiện thay đổi này rất nhiều lần trong Windows (cụ thể là mỗi khi tôi tải xuống bản nâng cấp, tất nhiên, thay đổi này sẽ xóa sạch thay đổi trước đó của tôi). Người đã đề xuất thay đổi cũng đề xuất một trình lưu trữ (un) có tên IZArc, trong đó toàn bộ quá trình có thể được thực hiện từ bên trong IZArc - mở (hủy lưu trữ) tệp .jar, tìm tệp .js, chỉnh sửa dòng ... và sau đó nhấp vào Quit sẽ đưa mọi thứ về trạng thái lưu trữ.

Tôi hiểu rằng tôi có thể hủy lưu trữ .jar bằng bất kỳ trình hủy lưu trữ nào và chỉnh sửa .js bằng bất kỳ trình soạn thảo văn bản nào. Tôi đoán rằng lo lắng của tôi là, không phải là một lập trình viên, tôi có thể làm điều gì đó có hại trong quá trình lưu trữ lại - không lưu trữ tất cả các tệp có liên quan hoặc lưu trữ quá nhiều tệp hoặc điều gì đó.

Vì vậy, câu hỏi của tôi là: Có một trình lưu trữ (hy vọng là trong Hệ điều hành) sẽ thực hiện tất cả những điều trên từ bên trong chính nó, để tôi biết rằng .jar cuối cùng chứa chính xác các tệp mà nó nên chứa? Hoặc, không thành công, tôi cần làm gì để đảm bảo rằng tôi đã lưu trữ lại nó đúng cách? Tôi nhận ra rằng trong diễn đàn này đây là một câu hỏi hoàn toàn dành cho người mới.

notjustjay

Ngày 19 tháng 9 năm 2003
Canada hả?
  • Ngày 15 tháng 4 năm 2011
Chà, nếu các tệp .jar chỉ đơn giản là các tệp ZIP có phần mở rộng khác, thì bạn có thể nén và giải nén chúng tự do từ Terminal bằng cách sử dụng lệnh 'zip' và 'giải nén'.

chown33

Người điều hành
Thành viên đội ngũ nhân viên
Ngày 9 tháng 8 năm 2009
Mặt phẳng Abysmal
  • Ngày 15 tháng 4 năm 2011
notjustjay đã nói: Chà, nếu các tệp .jar chỉ đơn giản là các tệp ZIP có phần mở rộng khác, thì bạn có thể nén và giải nén chúng tự do từ Terminal bằng lệnh 'zip' và 'unzip'.

Hoặc sử dụng lệnh 'jar', được viết rõ ràng cho mục đích này và duy trì thứ tự chính xác cho các tệp kê khai (thường phải nằm dưới dạng mục nhập đầu tiên hoặc nhiều nhất là một trong số các mục đầu tiên).

Tôi khá chắc chắn rằng lệnh jar được cài đặt theo mặc định. Điều này cũng sẽ đúng vào ngày 10.7 của Sư Tử.
Phản ứng:abronsdilan

notjustjay

Ngày 19 tháng 9 năm 2003
Canada hả?
  • Ngày 15 tháng 4 năm 2011
chown33 đã nói: Hoặc sử dụng lệnh 'jar', được viết rõ ràng cho mục đích này và duy trì thứ tự chính xác cho các tệp kê khai (thường phải nằm dưới dạng mục nhập đầu tiên hoặc nhiều nhất là một trong số các mục đầu tiên).

Tôi khá chắc chắn rằng lệnh jar được cài đặt theo mặc định. Điều này cũng sẽ đúng vào ngày 10.7 của Sư Tử.

Ah, thậm chí còn tốt hơn. Cảm ơn, tôi không biết về điều đó.

pilotError

Ngày 12 tháng 4 năm 2006
Đảo dài
  • Ngày 15 tháng 4 năm 2011
Hoặc bạn có thể sử dụng lệnh jar. Các tham số giống như các tiện ích zip dòng lệnh

$ jar -xvf jarfile.jar ** Giải nén các tệp

** chỉnh sửa tệp **

$ jar -cvf jarfile.jar ** Tạo tệp Jar mới
Phản ứng:abronsdilan NS

dudleybrooks

Áp phích gốc
Ngày 4 tháng 4 năm 2011
San Francisco
  • Ngày 15 tháng 4 năm 2011
Cảm ơn. Phương pháp của PilotError rất đơn giản và thành công - không có lỗi phần mềm, lỗi người mới hoặc thậm chí lỗi thí điểm. Nhưng nó vẫn có nhiều bước hơn tôi từng cần trong Windows: chuyển từ Terminal sau khi hủy lưu trữ, sang máy tính để bàn để sử dụng trình chỉnh sửa (thừa nhận là lỗi của tôi vì không biết (các) trình soạn thảo unix mà tôi cho rằng Terminal có quyền truy cập) , sau đó quay lại Terminal để lưu trữ lại - cộng với nhiều lần nhấn phím hơn cần thiết cho các lệnh unix. Tôi vẫn muốn tìm một trình soạn thảo thực hiện * tất cả * bên trong một chương trình, giống như IZArc đã làm trong Windows: ctrl-open, edit, ctrl-close - zip-zip (dự định chơi chữ)!

chown33

Người điều hành
Thành viên đội ngũ nhân viên
Ngày 9 tháng 8 năm 2009
Mặt phẳng Abysmal
  • Ngày 15 tháng 4 năm 2011
dudleybrooks nói: Cảm ơn. Phương pháp của PilotError rất đơn giản và thành công - không có lỗi phần mềm, lỗi người mới hoặc thậm chí lỗi thí điểm. Nhưng nó vẫn có nhiều bước hơn tôi từng cần trong Windows: chuyển từ Terminal sau khi hủy lưu trữ, sang máy tính để bàn để sử dụng trình chỉnh sửa (thừa nhận là lỗi của tôi vì không biết (các) trình soạn thảo unix mà tôi cho rằng Terminal có quyền truy cập) , sau đó quay lại Terminal để lưu trữ lại - cộng với nhiều lần nhấn phím hơn cần thiết cho các lệnh unix. Tôi vẫn muốn tìm một trình soạn thảo thực hiện * tất cả * bên trong một chương trình, giống như IZArc đã làm trong Windows: ctrl-open, edit, ctrl-close - zip-zip (dự định chơi chữ)!

Tôi không biết bất kỳ công cụ nào làm được mọi thứ. Thành thật mà nói, đây là lần đầu tiên tôi thấy bất kỳ ai hỏi cách chỉnh sửa tệp trong jar trên Mac OS, vì vậy tôi đoán không có thị trường mục tiêu lớn.

Bạn có thể dán các dòng lệnh vào Terminal, vì vậy chỉ cần lưu các lệnh vào một tệp văn bản, sau đó sao chép và dán đi. Không cần đánh máy.

Đây là những gì tôi sẽ lưu trong tệp văn bản:
Mã: jar -xvf jarfile.jar ## Extracts the files open -e path/to/fileYouWantToEdit.itsExtension jar -cvf jarfile.jar ## Create the new Jar file Rõ ràng là bạn nên thay đổi jarfile.jar thành tệp jar thực mà bạn có.

Tôi đã hiển thị ## vì đó là ký tự nhận xét thực tế cho bash.

Tôi cũng đã hiển thị lệnh 'open -e' với tên đường dẫn mà bạn sẽ phải thay thế. Open -e sẽ mở tệp được đặt tên trong TextEdit.app. Nếu bạn có một trình chỉnh sửa khác mà bạn thích thay thế, bạn có thể yêu cầu 'mở' để sử dụng nó thay thế. Đây là trang người dùng cho lệnh 'mở':
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/open.1.html
Đặc biệt hãy xem xét các tùy chọn -a và -b.

Cuối cùng, bạn có thể đặt các lệnh khác vào đó, chẳng hạn như 'cd someDir' hoặc bất kỳ lệnh nào khác mà bạn muốn.

Bạn có thể viết một tập lệnh 'sed' để thực hiện việc thay thế, vì vậy bạn sẽ không phải chỉnh sửa tệp theo cách thủ công. Sau đó, bạn có thể biến toàn bộ thành một tập lệnh shell, bọc nó vào một AppleScript và lưu nó dưới dạng giọt. Sau đó, trong tương lai, bạn chỉ cần thả ứng dụng gốc của mình vào giọt AppleScript và nó sẽ tự động thực hiện tất cả các thay đổi. Tuy nhiên, bạn sẽ phải viết và gỡ lỗi tất cả những thứ đó và có thể sẽ mất nhiều thời gian hơn là chỉ sao chép / dán khi ứng dụng được cập nhật.

Nếu thay đổi đối với jar là thứ mà nhà cung cấp nên cung cấp, bạn có thể nên gửi báo cáo lỗi về ứng dụng. Bởi vì cách sửa lỗi sạch sẽ nhất là không phải tự mình sửa chữa gì cả.

pilotError

Ngày 12 tháng 4 năm 2006
Đảo dài
  • Ngày 15 tháng 4 năm 2011
Trên windows, bạn có thể sử dụng các chương trình như pkzip hoặc winzip để hiển thị nội dung trong cửa sổ và bạn có thể chỉ cần nhấp đúp vào tệp sau đó được giải nén và gửi đến chương trình liên kết (trình chỉnh sửa).

Có các tiện ích zip trong OS X, nhưng phải thừa nhận rằng, tôi không sử dụng OS X giống như sử dụng windows. Tôi chắc rằng bạn có thể theo dõi một trong những chương trình sẽ cho phép bạn làm điều tương tự, nhưng đối với những gì cần thiết ở đây, nó không đáng để tìm kiếm nó. NS

dudleybrooks

Áp phích gốc
Ngày 4 tháng 4 năm 2011
San Francisco
  • Ngày 16 tháng 4 năm 2011
PilotError và Chown33: Tôi chắc rằng bạn nói đúng về việc thiếu thị trường trong OS X.

Chown33: Cảm ơn lời khuyên về tự động hóa và các chi tiết liên quan. Tôi sẽ thử chúng. OMG, tôi có thể trở thành một lập trình viên!

Đó là thứ mà tôi * nghĩ nên được sửa, nhưng nó không phải là lỗi: Thunderbird có cơ sở Tìm kiếm nâng cao cho các địa chỉ e-mail, có thể trả về nhiều địa chỉ. Nếu bạn nhấp vào Viết, nó sẽ đưa tất cả chúng vào các trường 'Tới' (không có tùy chọn nào khác). Sự thay đổi này khiến nó đưa chúng vào các trường 'BCC', để cư dân mạng tốt hơn. TB 1.x từng có tùy chọn này, nhưng bị mất trong 2.x. P

peregin55

Ngày 25 tháng 2 năm 2008
  • Ngày 8 tháng 5 năm 2011
Emacs sẽ làm những gì bạn muốn

Trên Linux và Mac OS X, tôi sử dụng emacs để chỉnh sửa tệp trong một jar. Chỉ loại:

emacs somejar.jar

Sau đó, bạn có thể duyệt tất cả các tệp trong jar, mở, lưu, bất cứ thứ gì bằng cách sử dụng các lệnh emacs tiêu chuẩn. Bất kỳ thay đổi nào bạn thực hiện sẽ tự động được áp dụng cho bình (không cần phải mở bất kỳ thứ gì theo cách thủ công)
Phản ứng:abronsdilan NS

dudleybrooks

Áp phích gốc
Ngày 4 tháng 4 năm 2011
San Francisco
  • Ngày 8 tháng 5 năm 2011
Cảm ơn!

peregin55

Đó là tốt để biết.

-
Dudley NS

tai họa lớn

Ngày 14 tháng 1 năm 2010
  • Ngày 8 tháng 6 năm 2012
argh. nó không hoạt động. Tôi cần thay thế một vài chuỗi trong các tệp .class (tôi sử dụng chính xác cùng một số ký hiệu), sau đó tôi cố gắng đóng gói lại nó bằng lệnh jar, nhưng tệp kết quả nhỏ hơn vài byte so với tệp ban đầu và khi tôi cố gắng cài đặt nó trên điện thoại di động của tôi, nó báo 'định dạng jar sai'.
Có ý kiến ​​gì không?

TopHatProductiontions115

Ngày 22 tháng 8 năm 2016
  • Ngày 10 tháng 11 năm 2016
pilotError đã nói: Hoặc bạn có thể sử dụng lệnh jar. Các tham số giống như các tiện ích zip dòng lệnh

$ jar -xvf jarfile.jar ** Giải nén các tệp

** chỉnh sửa tệp **

$ jar -cvf jarfile.jar ** Tạo tệp Jar mới


Điều này sẽ hoạt động cho các kho lưu trữ java đã ký?

michaelwarne

Ngày 11 tháng 11 năm 2016
  • Ngày 11 tháng 11 năm 2016
Bạn có thể sử dụng trình soạn thảo vim để chỉnh sửa các tệp trong bất kỳ tệp văn bản nén nào.
  1. Điều hướng đến vị trí tệp từ thiết bị đầu cuối.
  2. Nhập vim name.jar
  3. Chọn tệp bạn muốn thay đổi và nhấn Enter
  4. Chỉnh sửa tệp và nhấn Esc và: wq! để lưu và thoát.
Hi vọng điêu nay co ich.

okieiam

Ngày 17 tháng 12 năm 2016
  • Ngày 18 tháng 12 năm 2016
vâng, tôi cũng vậy, tôi đã từng sử dụng 7zip để chỉnh sửa classpath trong tệp jar trong Windows NS

jtara

Ngày 23 tháng 4 năm 2009
  • Ngày 21 tháng 12 năm 2016
Nếu bạn cần sửa đổi ứng dụng Thunderbird.app, hãy sử dụng nguồn, thực hiện thay đổi và xây dựng nó.

https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions NS

Clovr

Ngày 13 tháng 11 năm 2018
  • Ngày 13 tháng 11 năm 2018
michaelwarne cho biết: Bạn có thể sử dụng trình soạn thảo vim để chỉnh sửa các tệp trong bất kỳ tệp văn bản nén nào.
  1. Điều hướng đến vị trí tệp từ thiết bị đầu cuối.
  2. Nhập vim name.jar
  3. Chọn tệp bạn muốn thay đổi và nhấn Enter
  4. Chỉnh sửa tệp và nhấn Esc và: wq! để lưu và thoát.
Hi vọng điêu nay co ich.
chúng ta không thể tự động hóa điều này bằng cách sử dụng một bash? sẽ rất hữu ích nếu bạn hiểu ra nó.
Phản ứng:abronsdilan