如何将文件添加到Jar文件?

15 java jar

我想将之前从其他文件(已经完成)中提取的一系列文件添加到jar中.这些文件将覆盖JAR中的文件.最有效的方法是什么?我需要快速.谢谢!

jde*_*lop 19

jar -u file.jar file1 file2 file3 ...
Run Code Online (Sandbox Code Playgroud)

  • 为什么您希望您的客户在JAR文件中添加内容?让他们指定包含文件的文件夹,并在需要时阅读它们. (3认同)
  • JAR 只不过是 ZIP,所以 - zip -ur file.zip dir-fith-files/ (2认同)
  • @zyngawow,如果有意使用它的人无法处理命令行,他们应该能够使用他们喜欢的任何zip应用程序.我怀疑如果非技术用户打算以任何方式(CLI或GUI)摆弄jar/zip文件中存储的设置,他们无论如何都会抱怨. (2认同)

str*_*ing 8

JAR文件是ZIP文件,请记住.

只需使用一些ZIP库.

  • 如果您只想时不时地放入一些文件,那么我在 Windows 8.1 上所做的就是将文件的扩展名从 jar 重命名为 zip。然后我可以使用 Windows 资源管理器导航到文件并根据需要添加/删除。完成后把它放回罐子里,给自己喝杯啤酒。 (2认同)

Jon*_*n L 7

jar -uf my.jar file1 file2...
jar -uf my.jar dir/
Run Code Online (Sandbox Code Playgroud)

或混合

jar -uf my.jar file dir/
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么这个答案投票率如此低。当我尝试在 bash 脚本中使用 `jar -u` 时,我不得不按 `Ctrl + C` 使脚本继续(出于某种莫名其妙的原因)。添加`-f`修复它。 (3认同)

Ste*_*ton 7

只是为了补充现有的答案,至少有一种特殊情况:所谓的可执行 JAR 文件。如果您添加另一个 JAR 文件作为依赖项(无论您使用 jar 还是 zip),它都会抱怨嵌入文件被压缩:

Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/file.jar'. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
Run Code Online (Sandbox Code Playgroud)

解决这个问题的方法是使用0jar 选项:

jar uvf0 myfile.jar BOOT-INF/lib/file.jar
Run Code Online (Sandbox Code Playgroud)

对于普通的类文件,您不需要这个。