มีวิธีที่รวดเร็วในการลบไฟล์จาก Jar / war โดยไม่ต้องแตกไฟล์แล้วสร้างขึ้นใหม่หรือไม่?


105

ดังนั้นฉันต้องลบไฟล์ออกจากไฟล์ jar / war ฉันหวังว่าจะมีบางอย่างเช่น "jar -d myjar.jar file_I_donot_need.txt"

แต่ตอนนี้วิธีเดียวที่ฉันเห็นในการทำสิ่งนี้จากบรรทัดคำสั่ง Linux ของฉัน (โดยไม่ใช้ WinRAR / Winzip หรือ linux เทียบเท่า) คือ

  • ทำ "jar -xvf" และแตก
    ไฟล์ Jar ที่สมบูรณ์
  • ลบไฟล์ที่ฉันไม่ต้องการ
  • เปลี่ยนไฟล์ jar โดยใช้ "jar -cvf"

โปรดบอกฉันว่ามีวิธีที่สั้นกว่านี้ไหม


3
ตั้งแต่ "ขวด" เป็นเพียงไฟล์ซิปฉันสงสัยว่าคุณจะมีโชคดีในsuperuser.com
Kirk Woll

คุณยังสามารถลองเขียนเชลล์สคริปต์เพื่อรวมกระบวนการทั้งหมด สิ่งที่ชอบ./myscript.sh -d <list of files>
Favonius

คำตอบ:


203
zip -d file.jar unwanted_file.txt

jar เป็นเพียงไฟล์ zip เท่านั้น เร็วกว่าการไม่บีบอัด / บีบอัดใหม่แน่นอน


3
ฉันมักจะติดตั้ง p7zip แทนzipและในกรณีนี้สิ่งสำคัญคือต้องระบุรูปแบบไฟล์:7z d -tzip file.jar dir/unwanted_file.txt
lapo

@martona ฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด zip: โครงสร้างไฟล์ Zip
Goaler444

@ Goaler444 ฉันมีข้อผิดพลาดเดียวกัน แต่การใช้ 7z ตามที่ lapo แนะนำใช้ได้กับฉัน
yby

จะลบไฟล์ออกจากโถลูกหรือโถลูกใหญ่ได้อย่างไร
ทอม

5
หากคุณต้องการลบโฟลเดอร์ในโถตรวจสอบให้แน่ใจว่ามีเครื่องหมายทับบนโฟลเดอร์ที่ไม่ต้องการ:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

ใน Java คุณสามารถคัดลอกรายการทั้งหมดของ jar ยกเว้นรายการที่คุณต้องการลบ กล่าวคือคุณต้องทำสำเนา แต่ไม่จำเป็นต้องสร้างไฟล์แต่ละไฟล์

คุณสามารถทำได้โดย

  • สร้างไหใหม่
  • ทำซ้ำแม้ว่า Jar ที่คุณมี
  • คัดลอกรายการจาก jar หนึ่งไปยังอีกที่หนึ่งโดยข้ามไฟล์ที่คุณต้องการ
  • ปิดและเปลี่ยนโถเดิมหากคุณต้องการ

0

ในกรณีที่คุณต้องการลบไฟล์เพื่อยกเลิกการลงนาม jar คุณอาจทำได้เพียงแค่ทำให้ไฟล์. RSA มีขนาดเป็นศูนย์ jar uนี้สามารถทำได้มีเพียง ดูhttps://stackoverflow.com/a/24678645/653539 (ทำงานให้ฉันแม้ว่าฉันจะยอมรับว่ามันถูกแฮ็ก)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.