有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有没有一种从Jar/war中删除文件的快速方法,而不必提取Jar并重新创建它?

所以我需要从jar/war文件中删除一个文件。 我希望有类似“jar-d myjar.jar file\u I\u donot\u need.txt”的东西

但现在,我能看到的从Linux命令行执行此操作的唯一方法(不使用WinRAR/Winzip或Linux等效工具)是

  • 执行“jar-xvf”并提取
    完整的Jar文件
  • 删除我不需要的文件
  • 使用“jar-cvf”重新jar jar文件

请告诉我还有较短的路吗


共 (4) 个答案

  1. # 1 楼答案

    在Java中,您可以复制jar的所有条目,但要删除的条目除外。i、 e.你必须复制一份,但不需要创建单独的文件

    你可以通过

    • 创建一个新的罐子
    • 在你的罐子里迭代
    • 将条目从一个jar复制到另一个jar,跳过任何需要的文件
    • 如果需要,请关闭并更换原来的罐子
  2. # 2 楼答案

    如果您希望通过编程实现这一点,可以使用Zip文件系统将Zip/jar文件视为一个文件系统。这将允许您编辑、删除jar文件,并将文件添加到jar文件中

    Appending files to a zip file with Java

  3. # 3 楼答案

    zip -d file.jar unwanted_file.txt
    

    jar毕竟只是一个zip文件。绝对比解压/再压缩快得多

  4. # 4 楼答案

    如果您想要删除文件以取消签名签名jar,您可能只需要执行以下操作。RSA文件大小为零。这可以通过jar u实现。见https://stackoverflow.com/a/24678645/653539。(对我有用,但我承认这是黑客行为。)